@tloncorp/openclaw 0.2.0 → 0.4.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 +232 -23
- package/dist/index.js +204 -69
- package/dist/index.js.map +1 -1
- package/dist/setup-api.js +3 -0
- package/dist/setup-api.js.map +1 -0
- package/dist/setup-entry.js +4 -0
- package/dist/setup-entry.js.map +1 -0
- package/dist/src/actions.js +30 -8
- package/dist/src/actions.js.map +1 -1
- package/dist/src/channel.js +155 -420
- package/dist/src/channel.js.map +1 -1
- package/dist/src/channel.runtime.js +142 -0
- package/dist/src/channel.runtime.js.map +1 -0
- package/dist/src/config-schema.js +37 -1
- package/dist/src/config-schema.js.map +1 -1
- package/dist/src/effective-owner.js +22 -0
- package/dist/src/effective-owner.js.map +1 -0
- package/dist/src/gateway-status.js +72 -0
- package/dist/src/gateway-status.js.map +1 -0
- package/dist/src/monitor/approval.js.map +1 -1
- package/dist/src/monitor/computing-presence.js +221 -0
- package/dist/src/monitor/computing-presence.js.map +1 -0
- package/dist/src/monitor/discovery.js +2 -2
- package/dist/src/monitor/index.js +665 -171
- package/dist/src/monitor/index.js.map +1 -1
- package/dist/src/monitor/media.js +165 -6
- package/dist/src/monitor/media.js.map +1 -1
- package/dist/src/monitor/nudge-runner.js +232 -0
- package/dist/src/monitor/nudge-runner.js.map +1 -0
- package/dist/src/monitor/nudge-state.js +58 -0
- package/dist/src/monitor/nudge-state.js.map +1 -0
- package/dist/src/monitor/owner-reply-persistence.js +92 -0
- package/dist/src/monitor/owner-reply-persistence.js.map +1 -0
- package/dist/src/monitor/pending-nudge-persistence.js +15 -0
- package/dist/src/monitor/pending-nudge-persistence.js.map +1 -0
- package/dist/src/monitor/settings-sync.js +28 -0
- package/dist/src/monitor/settings-sync.js.map +1 -0
- package/dist/src/monitor/utils.js +0 -4
- package/dist/src/monitor/utils.js.map +1 -1
- package/dist/src/nudge-decision.js +309 -0
- package/dist/src/nudge-decision.js.map +1 -0
- package/dist/src/nudge-messages.js +25 -0
- package/dist/src/nudge-messages.js.map +1 -0
- package/dist/src/nudge-scheduler.js +91 -0
- package/dist/src/nudge-scheduler.js.map +1 -0
- package/dist/src/pending-nudge.js +57 -0
- package/dist/src/pending-nudge.js.map +1 -0
- package/dist/src/settings.js +77 -5
- package/dist/src/settings.js.map +1 -1
- package/dist/src/setup-core.js +164 -0
- package/dist/src/setup-core.js.map +1 -0
- package/dist/src/setup-surface.js +85 -0
- package/dist/src/setup-surface.js.map +1 -0
- package/dist/src/telemetry.js +252 -0
- package/dist/src/telemetry.js.map +1 -0
- package/dist/src/tlon-binary.js +46 -0
- package/dist/src/tlon-binary.js.map +1 -0
- package/dist/src/tlon-tool-guard.js +44 -0
- package/dist/src/tlon-tool-guard.js.map +1 -0
- package/dist/src/tool-trace.js +100 -0
- package/dist/src/tool-trace.js.map +1 -0
- package/dist/src/types.js +31 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/urbit/api-client.js +4 -3
- package/dist/src/urbit/api-client.js.map +1 -1
- package/dist/src/urbit/base-url.js +2 -2
- package/dist/src/urbit/base-url.js.map +1 -1
- package/dist/src/urbit/fetch.js +1 -1
- package/dist/src/urbit/fetch.js.map +1 -1
- package/dist/src/urbit/upload.js +1 -1
- package/dist/src/urbit/upload.js.map +1 -1
- package/dist/src/version.generated.js +1 -1
- package/dist/src/version.generated.js.map +1 -1
- package/package.json +31 -24
- package/dist/src/onboarding.js +0 -178
- package/dist/src/onboarding.js.map +0 -1
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plumbing layer that wires the pure nudge-scheduler to live Urbit API,
|
|
3
|
+
* settings snapshot, shadows, telemetry, and the pending-nudge record.
|
|
4
|
+
*
|
|
5
|
+
* The runner owns the tick body. The scheduler owns the timer lifecycle.
|
|
6
|
+
*/
|
|
7
|
+
import { computeTargetStage, daysBetween, inActiveHours, resolveActiveHours, resolveLastOwnerInstant, } from "../nudge-decision.js";
|
|
8
|
+
import { NUDGE_MESSAGES } from "../nudge-messages.js";
|
|
9
|
+
import { createNudgeScheduler, DEFAULT_NUDGE_TICK_INTERVAL_MS, } from "../nudge-scheduler.js";
|
|
10
|
+
import { parseSettingsResponse } from "../settings.js";
|
|
11
|
+
import { listRunnableTlonAccountIds } from "../types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Decide whether the monitor should construct and start the nudge runner.
|
|
14
|
+
*
|
|
15
|
+
* Two gates:
|
|
16
|
+
* 1. `channels.tlon.reengagement.enabled` must be explicitly `true`. The
|
|
17
|
+
* feature is default-off so self-hosted installs that configure
|
|
18
|
+
* `ownerShip` for approval DMs do not automatically get owner nudges.
|
|
19
|
+
* 2. Exactly one Tlon account must be configured. The runner sends DMs
|
|
20
|
+
* through the global `@tloncorp/api` client configured by
|
|
21
|
+
* `configureTlonApiWithPoke`, and the last-started monitor wins that
|
|
22
|
+
* singleton — so multi-account mode is not safe until a per-account
|
|
23
|
+
* send path lands.
|
|
24
|
+
*
|
|
25
|
+
* Pure helper; does not read process state.
|
|
26
|
+
*/
|
|
27
|
+
export function shouldStartNudgeRunner(cfg) {
|
|
28
|
+
const reengagementEnabled = cfg.channels?.tlon?.reengagement
|
|
29
|
+
?.enabled === true;
|
|
30
|
+
if (!reengagementEnabled) {
|
|
31
|
+
return {
|
|
32
|
+
start: false,
|
|
33
|
+
reason: "flag-disabled",
|
|
34
|
+
detail: "channels.tlon.reengagement.enabled is not true",
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Count *runnable* accounts (enabled + fully configured). Disabled or
|
|
38
|
+
// half-configured stub entries should not trip the multi-account guard,
|
|
39
|
+
// since they would never start a monitor and so cannot race the global
|
|
40
|
+
// `@tloncorp/api` singleton with the active account.
|
|
41
|
+
const accountIds = listRunnableTlonAccountIds(cfg);
|
|
42
|
+
if (accountIds.length !== 1) {
|
|
43
|
+
return {
|
|
44
|
+
start: false,
|
|
45
|
+
reason: "multi-account",
|
|
46
|
+
detail: `${accountIds.length} runnable Tlon accounts; runner requires exactly 1`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return { start: true, reason: null };
|
|
50
|
+
}
|
|
51
|
+
export function createNudgeRunner(deps) {
|
|
52
|
+
const now = deps.now ?? (() => Date.now());
|
|
53
|
+
const intervalMs = deps.intervalMs ?? DEFAULT_NUDGE_TICK_INTERVAL_MS;
|
|
54
|
+
/**
|
|
55
|
+
* Resolve the authoritative `lastNudgeStage` for the duplicate-prevention
|
|
56
|
+
* guard.
|
|
57
|
+
*
|
|
58
|
+
* The shadow is updated synchronously by every trusted path (post-poke
|
|
59
|
+
* advance, owner-reply clear, subscription reconcile, fresh-refresh
|
|
60
|
+
* reconcile) and is never downgraded from a stale scry. It is therefore
|
|
61
|
+
* authoritative for the guard: returning it honors a trusted lower or
|
|
62
|
+
* clear immediately — even if `/settings/all.json` still lags with the
|
|
63
|
+
* old higher value — and still short-circuits duplicates when a local
|
|
64
|
+
* advance has not yet propagated to storage.
|
|
65
|
+
*
|
|
66
|
+
* A best-effort scry is kept for observability so operators can see
|
|
67
|
+
* subscription-lag drift in the logs, but its value does not feed the
|
|
68
|
+
* guard. Admin raises delivered while subscription is dead catch up
|
|
69
|
+
* through the periodic fresh-refresh path (`applySettingsSnapshot`
|
|
70
|
+
* with `fresh: true`), which updates the shadow before the next tick.
|
|
71
|
+
*/
|
|
72
|
+
async function resolveAuthoritativeStage() {
|
|
73
|
+
const shadow = deps.getLastNudgeStageShadow(deps.accountId) ?? 0;
|
|
74
|
+
try {
|
|
75
|
+
const raw = await deps.api.scry("/settings/all.json");
|
|
76
|
+
const bucket = raw?.all?.moltbot;
|
|
77
|
+
const parsed = parseSettingsResponse(bucket ?? {});
|
|
78
|
+
const fresh = parsed.lastNudgeStage ?? 0;
|
|
79
|
+
if (fresh !== shadow) {
|
|
80
|
+
deps.runtime?.log?.(`[tlon] nudge: stage shadow=${shadow} scry=${fresh} — shadow wins (trusted path)`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
deps.runtime?.error?.(`[tlon] nudge: fresh lastNudgeStage scry failed: ${String(err)}`);
|
|
85
|
+
}
|
|
86
|
+
return shadow;
|
|
87
|
+
}
|
|
88
|
+
async function pokeLastNudgeStage(stage) {
|
|
89
|
+
await deps.api.poke({
|
|
90
|
+
app: "settings",
|
|
91
|
+
mark: "settings-event",
|
|
92
|
+
json: {
|
|
93
|
+
"put-entry": {
|
|
94
|
+
desk: "moltbot",
|
|
95
|
+
"bucket-key": "tlon",
|
|
96
|
+
"entry-key": "lastNudgeStage",
|
|
97
|
+
value: stage,
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Re-read owner activity through the same shadow/mirror resolver the
|
|
104
|
+
* tick used at its top. Returns true when activity has advanced since
|
|
105
|
+
* the threshold captured at the start of the tick. Used to suppress
|
|
106
|
+
* a stale send and to skip recording a fresh `pendingNudge` after the
|
|
107
|
+
* owner has resumed activity mid-tick.
|
|
108
|
+
*/
|
|
109
|
+
function ownerActivityAdvancedSince(thresholdMs) {
|
|
110
|
+
const recheck = resolveLastOwnerInstant(deps.getLastOwnerActivity(deps.accountId), deps.getSettings());
|
|
111
|
+
return recheck != null && recheck > thresholdMs;
|
|
112
|
+
}
|
|
113
|
+
async function tick() {
|
|
114
|
+
if (deps.abortSignal?.aborted) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const settings = deps.getSettings();
|
|
118
|
+
const ownerShip = deps.getEffectiveOwnerShip(deps.accountId);
|
|
119
|
+
if (!ownerShip) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const activeHours = resolveActiveHours(settings, deps.cfg);
|
|
123
|
+
if (!inActiveHours(new Date(now()), activeHours)) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const lastOwnerAt = resolveLastOwnerInstant(deps.getLastOwnerActivity(deps.accountId), settings);
|
|
127
|
+
if (lastOwnerAt == null) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const idle = daysBetween(lastOwnerAt, now());
|
|
131
|
+
const targetStage = computeTargetStage(idle);
|
|
132
|
+
if (targetStage == null) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const freshStage = await resolveAuthoritativeStage();
|
|
136
|
+
if (targetStage <= freshStage) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
await pokeLastNudgeStage(targetStage);
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
deps.runtime?.error?.(`[tlon] nudge: failed to advance lastNudgeStage to ${targetStage}: ${String(err)}`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
// Pre-send recheck runs BEFORE committing the local shadow advance.
|
|
147
|
+
// If the owner reply handler ran during the poke await, it observed
|
|
148
|
+
// `shadowStage === 0` (we hadn't advanced yet) and `pending === null`,
|
|
149
|
+
// so `willClearStage` was false and it skipped the del-entry. We
|
|
150
|
+
// need to restore the stage-reset invariant ourselves: leave the
|
|
151
|
+
// shadow at whatever the handler set (0) and enqueue a stage clear
|
|
152
|
+
// through the ordered persistence queue so activity put-entries
|
|
153
|
+
// settle before the del-entry lands, matching the crash-consistency
|
|
154
|
+
// rules the handler normally observes.
|
|
155
|
+
if (ownerActivityAdvancedSince(lastOwnerAt)) {
|
|
156
|
+
deps.runtime?.log?.(`[tlon] nudge: owner replied between scry and send; clearing stage ${targetStage} for next cycle`);
|
|
157
|
+
deps.setLastNudgeStageShadow(deps.accountId, 0);
|
|
158
|
+
deps.ownerReplyPersistence?.enqueueStageClear();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// Commit the advance now that we know we'll actually send. Placing
|
|
162
|
+
// this write after the recheck avoids leaving the shadow stuck at
|
|
163
|
+
// `targetStage` on the race above.
|
|
164
|
+
deps.setLastNudgeStageShadow(deps.accountId, targetStage);
|
|
165
|
+
const content = NUDGE_MESSAGES[targetStage];
|
|
166
|
+
const sentAt = now();
|
|
167
|
+
let sent = false;
|
|
168
|
+
try {
|
|
169
|
+
await deps.sendDm({
|
|
170
|
+
fromShip: deps.botShip,
|
|
171
|
+
toShip: ownerShip,
|
|
172
|
+
text: content,
|
|
173
|
+
botProfile: deps.getBotProfile?.(),
|
|
174
|
+
});
|
|
175
|
+
sent = true;
|
|
176
|
+
}
|
|
177
|
+
catch (sendErr) {
|
|
178
|
+
deps.runtime?.error?.(`[tlon] nudge: send failed after stage advance (stage ${targetStage}): ${String(sendErr)}`);
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
deps.telemetry?.captureHeartbeatNudge({
|
|
182
|
+
ownerShip,
|
|
183
|
+
botShip: deps.botShip,
|
|
184
|
+
nudgeStage: targetStage,
|
|
185
|
+
nudgeTarget: ownerShip,
|
|
186
|
+
channel: "tlon",
|
|
187
|
+
success: sent,
|
|
188
|
+
accountId: deps.accountId,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
deps.runtime?.error?.(`[tlon] nudge: telemetry capture failed: ${String(err)}`);
|
|
193
|
+
}
|
|
194
|
+
if (sent) {
|
|
195
|
+
// Post-send recheck: the DM is already on the wire, but if the
|
|
196
|
+
// owner replied during the `await sendDm` we must not record a
|
|
197
|
+
// fresh `pendingNudge`. That record powers reply-context injection
|
|
198
|
+
// for the next 72h, and writing it after a real reply would
|
|
199
|
+
// misattribute their message to a nudge we sent moments later.
|
|
200
|
+
if (ownerActivityAdvancedSince(lastOwnerAt)) {
|
|
201
|
+
deps.runtime?.log?.(`[tlon] nudge: owner replied during stage ${targetStage} send; not recording pendingNudge`);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
deps.setLocalPendingNudge(deps.accountId, {
|
|
206
|
+
sentAt,
|
|
207
|
+
stage: targetStage,
|
|
208
|
+
ownerShip,
|
|
209
|
+
accountId: deps.accountId,
|
|
210
|
+
content,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
deps.runtime?.error?.(`[tlon] nudge: setLocalPendingNudge failed: ${String(err)}`);
|
|
215
|
+
}
|
|
216
|
+
deps.runtime?.log?.(`[tlon] nudge: sent stage ${targetStage} to ${ownerShip}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const scheduler = createNudgeScheduler({
|
|
220
|
+
tick,
|
|
221
|
+
intervalMs,
|
|
222
|
+
abortSignal: deps.abortSignal,
|
|
223
|
+
log: (msg) => deps.runtime?.log?.(msg),
|
|
224
|
+
error: (msg) => deps.runtime?.error?.(msg),
|
|
225
|
+
});
|
|
226
|
+
return {
|
|
227
|
+
start: () => scheduler.start(),
|
|
228
|
+
stop: () => scheduler.stop(),
|
|
229
|
+
tickNow: () => scheduler.tickNow(),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=nudge-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nudge-runner.js","sourceRoot":"","sources":["../../../src/monitor/nudge-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,oBAAoB,EACpB,8BAA8B,GAE/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAA0B,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAMzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAmB;IACxD,MAAM,mBAAmB,GACtB,GAAG,CAAC,QAAQ,EAAE,IAA6D,EAAE,YAAY;QACxF,EAAE,OAAO,KAAK,IAAI,CAAC;IACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,eAAe;YACvB,MAAM,EAAE,gDAAgD;SACzD,CAAC;IACJ,CAAC;IACD,sEAAsE;IACtE,wEAAwE;IACxE,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,eAAe;YACvB,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,oDAAoD;SACjF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC;AA8CD,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,8BAA8B,CAAC;IAErE;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,UAAU,yBAAyB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACtD,MAAM,MAAM,GAAI,GAAyC,EAAE,GAAG,EAAE,OAAO,CAAC;YACxE,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CACjB,8BAA8B,MAAM,SAAS,KAAK,+BAA+B,CAClF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,mDAAmD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,UAAU,kBAAkB,CAAC,KAAiB;QACjD,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAClB,GAAG,EAAE,UAAU;YACf,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE;gBACJ,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,MAAM;oBACpB,WAAW,EAAE,gBAAgB;oBAC7B,KAAK,EAAE,KAAK;iBACb;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,SAAS,0BAA0B,CAAC,WAAmB;QACrD,MAAM,OAAO,GAAG,uBAAuB,CACrC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EACzC,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;QACF,OAAO,OAAO,IAAI,IAAI,IAAI,OAAO,GAAG,WAAW,CAAC;IAClD,CAAC;IAED,KAAK,UAAU,IAAI;QACjB,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAEzB,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAE3D,MAAM,WAAW,GAAG,uBAAuB,CACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EACzC,QAAQ,CACT,CAAC;QACF,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAElC,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAElC,MAAM,UAAU,GAAG,MAAM,yBAAyB,EAAE,CAAC;QACrD,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAAA,OAAO;QAAA,CAAC;QAExC,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CACnB,qDAAqD,WAAW,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CACnF,CAAC;YACF,OAAO;QACT,CAAC;QAED,oEAAoE;QACpE,oEAAoE;QACpE,uEAAuE;QACvE,iEAAiE;QACjE,iEAAiE;QACjE,mEAAmE;QACnE,gEAAgE;QAChE,oEAAoE;QACpE,uCAAuC;QACvC,IAAI,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CACjB,qEAAqE,WAAW,iBAAiB,CAClG,CAAC;YACF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,mEAAmE;QACnE,kEAAkE;QAClE,mCAAmC;QACnC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC;gBAChB,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE;aACnC,CAAC,CAAC;YACH,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CACnB,wDAAwD,WAAW,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,CAC3F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC;gBACpC,SAAS;gBACT,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,WAAW;gBACvB,WAAW,EAAE,SAAS;gBACtB,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,2CAA2C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,+DAA+D;YAC/D,+DAA+D;YAC/D,mEAAmE;YACnE,4DAA4D;YAC5D,+DAA+D;YAC/D,IAAI,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CACjB,4CAA4C,WAAW,mCAAmC,CAC3F,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE;oBACxC,MAAM;oBACN,KAAK,EAAE,WAAW;oBAClB,SAAS;oBACT,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,8CAA8C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,4BAA4B,WAAW,OAAO,SAAS,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAmB,oBAAoB,CAAC;QACrD,IAAI;QACJ,UAAU;QACV,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;QACtC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE;QAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-account in-memory shadows used by the nudge scheduler.
|
|
3
|
+
*
|
|
4
|
+
* The scheduler never consults the subscription-derived settings mirror for
|
|
5
|
+
* its stage guard or owner-activity check; both live here, updated
|
|
6
|
+
* synchronously by the monitor on observable events. See the plan for
|
|
7
|
+
* `TLON-5628` for the invariants these shadows enforce.
|
|
8
|
+
*/
|
|
9
|
+
const ownerActivity = new Map();
|
|
10
|
+
const stageShadow = new Map();
|
|
11
|
+
export function setLastOwnerActivity(accountId, activity) {
|
|
12
|
+
if (activity == null) {
|
|
13
|
+
ownerActivity.delete(accountId);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
ownerActivity.set(accountId, activity);
|
|
17
|
+
}
|
|
18
|
+
export function getLastOwnerActivity(accountId) {
|
|
19
|
+
return ownerActivity.get(accountId) ?? null;
|
|
20
|
+
}
|
|
21
|
+
export function setLastNudgeStageShadow(accountId, stage) {
|
|
22
|
+
stageShadow.set(accountId, stage);
|
|
23
|
+
}
|
|
24
|
+
export function getLastNudgeStageShadow(accountId) {
|
|
25
|
+
return stageShadow.get(accountId) ?? null;
|
|
26
|
+
}
|
|
27
|
+
export function clearShadowsForAccount(accountId) {
|
|
28
|
+
ownerActivity.delete(accountId);
|
|
29
|
+
stageShadow.delete(accountId);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Derive a seed value for the owner-activity shadow from a loaded
|
|
33
|
+
* settings snapshot. Missing fields seed the shadow as absent.
|
|
34
|
+
*/
|
|
35
|
+
export function ownerActivityFromSettings(settings) {
|
|
36
|
+
const at = typeof settings.lastOwnerMessageAt === "number" ? settings.lastOwnerMessageAt : null;
|
|
37
|
+
const date = typeof settings.lastOwnerMessageDate === "string" ? settings.lastOwnerMessageDate : null;
|
|
38
|
+
if (at != null && date != null) {
|
|
39
|
+
return { at, date };
|
|
40
|
+
}
|
|
41
|
+
if (at != null) {
|
|
42
|
+
return { at, date: new Date(at).toISOString().split("T")[0] ?? "" };
|
|
43
|
+
}
|
|
44
|
+
if (date != null) {
|
|
45
|
+
const parsed = Date.parse(date);
|
|
46
|
+
if (Number.isFinite(parsed)) {
|
|
47
|
+
return { at: parsed, date };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
export const _testing = {
|
|
53
|
+
clearAll: () => {
|
|
54
|
+
ownerActivity.clear();
|
|
55
|
+
stageShadow.clear();
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=nudge-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nudge-state.js","sourceRoot":"","sources":["../../../src/monitor/nudge-state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;AAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgC,CAAC;AAE5D,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,QAAkC;IACxF,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IACD,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAiB,EAAE,KAA2B;IACpF,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,OAAO,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAA2B;IACnE,MAAM,EAAE,GAAG,OAAO,QAAQ,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,MAAM,IAAI,GACR,OAAO,QAAQ,CAAC,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3F,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IACD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,GAAG,EAAE;QACb,aAAa,CAAC,KAAK,EAAE,CAAC;QACtB,WAAW,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordered background queue for owner-reply %settings writes.
|
|
3
|
+
*
|
|
4
|
+
* The monitor's owner-message handler calls `enqueue` synchronously without
|
|
5
|
+
* awaiting. Inside each batch task, the two `put-entry` pokes
|
|
6
|
+
* (`lastOwnerMessageAt` + `lastOwnerMessageDate`) must settle before the
|
|
7
|
+
* optional `del-entry` (`lastNudgeStage`) is issued on the wire. That
|
|
8
|
+
* ordering is what keeps a mid-reply crash from landing the persistent
|
|
9
|
+
* state in "stage cleared, owner still idle", which could otherwise let a
|
|
10
|
+
* duplicate nudge fire on the next tick after restart.
|
|
11
|
+
*/
|
|
12
|
+
export function createOwnerReplyPersistenceQueue(api, log = {}) {
|
|
13
|
+
let tail = Promise.resolve();
|
|
14
|
+
return {
|
|
15
|
+
enqueue(batch) {
|
|
16
|
+
tail = tail
|
|
17
|
+
.catch(() => undefined)
|
|
18
|
+
.then(async () => {
|
|
19
|
+
try {
|
|
20
|
+
await Promise.all([
|
|
21
|
+
api.poke({
|
|
22
|
+
app: "settings",
|
|
23
|
+
mark: "settings-event",
|
|
24
|
+
json: {
|
|
25
|
+
"put-entry": {
|
|
26
|
+
desk: "moltbot",
|
|
27
|
+
"bucket-key": "tlon",
|
|
28
|
+
"entry-key": "lastOwnerMessageAt",
|
|
29
|
+
value: batch.at,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
}),
|
|
33
|
+
api.poke({
|
|
34
|
+
app: "settings",
|
|
35
|
+
mark: "settings-event",
|
|
36
|
+
json: {
|
|
37
|
+
"put-entry": {
|
|
38
|
+
desk: "moltbot",
|
|
39
|
+
"bucket-key": "tlon",
|
|
40
|
+
"entry-key": "lastOwnerMessageDate",
|
|
41
|
+
value: batch.date,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
}),
|
|
45
|
+
]);
|
|
46
|
+
if (batch.clearStage) {
|
|
47
|
+
await api.poke({
|
|
48
|
+
app: "settings",
|
|
49
|
+
mark: "settings-event",
|
|
50
|
+
json: {
|
|
51
|
+
"del-entry": {
|
|
52
|
+
desk: "moltbot",
|
|
53
|
+
"bucket-key": "tlon",
|
|
54
|
+
"entry-key": "lastNudgeStage",
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
log.error?.(`[tlon] owner-reply persistence failed: ${String(err)}`);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
enqueueStageClear() {
|
|
66
|
+
tail = tail
|
|
67
|
+
.catch(() => undefined)
|
|
68
|
+
.then(async () => {
|
|
69
|
+
try {
|
|
70
|
+
await api.poke({
|
|
71
|
+
app: "settings",
|
|
72
|
+
mark: "settings-event",
|
|
73
|
+
json: {
|
|
74
|
+
"del-entry": {
|
|
75
|
+
desk: "moltbot",
|
|
76
|
+
"bucket-key": "tlon",
|
|
77
|
+
"entry-key": "lastNudgeStage",
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
log.error?.(`[tlon] owner-reply stage-clear failed: ${String(err)}`);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
async flush() {
|
|
88
|
+
await tail;
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=owner-reply-persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-reply-persistence.js","sourceRoot":"","sources":["../../../src/monitor/owner-reply-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6BH,MAAM,UAAU,gCAAgC,CAC9C,GAAa,EACb,MAAyC,EAAE;IAE3C,IAAI,IAAI,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE5C,OAAO;QACL,OAAO,CAAC,KAAiC;YACvC,IAAI,GAAG,IAAI;iBACR,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;iBACtB,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,GAAG,CAAC;wBAChB,GAAG,CAAC,IAAI,CAAC;4BACP,GAAG,EAAE,UAAU;4BACf,IAAI,EAAE,gBAAgB;4BACtB,IAAI,EAAE;gCACJ,WAAW,EAAE;oCACX,IAAI,EAAE,SAAS;oCACf,YAAY,EAAE,MAAM;oCACpB,WAAW,EAAE,oBAAoB;oCACjC,KAAK,EAAE,KAAK,CAAC,EAAE;iCAChB;6BACF;yBACF,CAAC;wBACF,GAAG,CAAC,IAAI,CAAC;4BACP,GAAG,EAAE,UAAU;4BACf,IAAI,EAAE,gBAAgB;4BACtB,IAAI,EAAE;gCACJ,WAAW,EAAE;oCACX,IAAI,EAAE,SAAS;oCACf,YAAY,EAAE,MAAM;oCACpB,WAAW,EAAE,sBAAsB;oCACnC,KAAK,EAAE,KAAK,CAAC,IAAI;iCAClB;6BACF;yBACF,CAAC;qBACH,CAAC,CAAC;oBAEH,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;wBACrB,MAAM,GAAG,CAAC,IAAI,CAAC;4BACb,GAAG,EAAE,UAAU;4BACf,IAAI,EAAE,gBAAgB;4BACtB,IAAI,EAAE;gCACJ,WAAW,EAAE;oCACX,IAAI,EAAE,SAAS;oCACf,YAAY,EAAE,MAAM;oCACpB,WAAW,EAAE,gBAAgB;iCAC9B;6BACF;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,EAAE,CAAC,0CAA0C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC,CAAC,CAAC;QACP,CAAC;QACD,iBAAiB;YACf,IAAI,GAAG,IAAI;iBACR,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;iBACtB,IAAI,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,IAAI,CAAC;wBACb,GAAG,EAAE,UAAU;wBACf,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE;4BACJ,WAAW,EAAE;gCACX,IAAI,EAAE,SAAS;gCACf,YAAY,EAAE,MAAM;gCACpB,WAAW,EAAE,gBAAgB;6BAC9B;yBACF;qBACF,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,EAAE,CAAC,0CAA0C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC,CAAC,CAAC;QACP,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,IAAI,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serialize pending-nudge persistence so %settings writes land in-order.
|
|
3
|
+
*/
|
|
4
|
+
export function createPendingNudgePersistenceQueue(write) {
|
|
5
|
+
let tail = Promise.resolve();
|
|
6
|
+
return {
|
|
7
|
+
enqueue(nudge) {
|
|
8
|
+
tail = tail.catch(() => undefined).then(() => write(nudge));
|
|
9
|
+
},
|
|
10
|
+
async flush() {
|
|
11
|
+
await tail;
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=pending-nudge-persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-nudge-persistence.js","sourceRoot":"","sources":["../../../src/monitor/pending-nudge-persistence.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,UAAU,kCAAkC,CAAC,KAAwB;IACzE,IAAI,IAAI,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE5C,OAAO;QACL,OAAO,CAAC,KAA0B;YAChC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,IAAI,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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";
|
|
9
|
+
export function resolveSettingsMirrorSync(params) {
|
|
10
|
+
const { prevSettings, newSettings, fileConfigOwnerShip } = params;
|
|
11
|
+
// ownerShip: compare string values (normalize for comparison)
|
|
12
|
+
const prevOwner = prevSettings.ownerShip;
|
|
13
|
+
const newOwner = newSettings.ownerShip;
|
|
14
|
+
const normalizedPrevOwner = prevOwner ? normalizeShip(prevOwner) : null;
|
|
15
|
+
const normalizedNewOwner = newOwner ? normalizeShip(newOwner) : null;
|
|
16
|
+
const ownerShipChanged = normalizedPrevOwner !== normalizedNewOwner;
|
|
17
|
+
const effectiveOwnerShip = normalizedNewOwner ?? fileConfigOwnerShip;
|
|
18
|
+
// pendingNudge: reference equality since applySettingsUpdate uses shallow spread
|
|
19
|
+
const pendingNudgeChanged = prevSettings.pendingNudge !== newSettings.pendingNudge;
|
|
20
|
+
const pendingNudge = newSettings.pendingNudge ?? null;
|
|
21
|
+
return {
|
|
22
|
+
ownerShipChanged,
|
|
23
|
+
effectiveOwnerShip,
|
|
24
|
+
pendingNudgeChanged,
|
|
25
|
+
pendingNudge,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=settings-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-sync.js","sourceRoot":"","sources":["../../../src/monitor/settings-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,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,GAAkB,kBAAkB,IAAI,mBAAmB,CAAC;IAEpF,iFAAiF;IACjF,MAAM,mBAAmB,GAAG,YAAY,CAAC,YAAY,KAAK,WAAW,CAAC,YAAY,CAAC;IACnF,MAAM,YAAY,GAAwB,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC;IAE3E,OAAO;QACL,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -65,10 +65,6 @@ export function isBotMentioned(messageText, botShipName, nickname) {
|
|
|
65
65
|
if (!messageText || !botShipName) {
|
|
66
66
|
return false;
|
|
67
67
|
}
|
|
68
|
-
// Check for @all mention
|
|
69
|
-
if (/@all\b/i.test(messageText)) {
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
68
|
// Check for ship mention
|
|
73
69
|
const normalizedBotShip = normalizeShip(botShipName);
|
|
74
70
|
const escapedShip = normalizedBotShip.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/monitor/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA2B9C,yCAAyC;AACzC,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YAE9B,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;gBAClC,MAAM,UAAU,GAAG,KAAK,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC3D,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,KAAK;oBACL,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;oBACvB,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;iBACxB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7E,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;oBACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;oBACrB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAA2B;IACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACtF,MAAM,aAAa,GAA2B;QAC5C,iBAAiB,EAAE,iBAAiB;QACpC,mBAAmB,EAAE,mBAAmB;QACxC,mBAAmB,EAAE,mBAAmB;QACxC,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,OAAO;QAChB,kBAAkB,EAAE,kBAAkB;QACtC,YAAY,EAAE,YAAY;KAC3B,CAAC;IAEF,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,SAAS;SACb,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,WAAmB,EACnB,WAAmB,EACnB,QAAiB;IAEjB,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yBAAyB;IACzB,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,UAAU,WAAW,WAAW,EAAE,GAAG,CAAC,CAAC;IACzE,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,UAAU,eAAe,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACrF,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,WAAmB;IACtE,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW;QAAE,OAAO,WAAW,CAAC;IACrD,OAAO,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,SAA+B;IAC7E,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,gBAAgB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AAChG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,SAA+B;IAE/B,2DAA2D;IAC3D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;AACjG,CAAC;AAED,yDAAyD;AACzD,SAAS,iBAAiB,CAAC,KAAY;IACrC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;QACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;YACD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;YAClC,CAAC;YACD,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxB,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YACtC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;YAC5B,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,OAAO,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAChD,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,OAAO,KAAK,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACjD,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;QAClB,mDAAmD;QACnD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC,MAAM;iBAChB,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,OAAO,IAAI,CAAC,IAAI,CAAC;oBACnB,CAAC;oBACD,wCAAwC;oBACxC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;wBACnB,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;oBAClC,CAAC;oBACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC7B,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBAChC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxB,CAAC;oBACD,mDAAmD;oBACnD,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;wBACxB,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtC,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,OAAO,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;oBAC5B,CAAC;oBACD,uDAAuD;oBACvD,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1C,OAAO,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/C,CAAC;oBACD,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBAChD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;oBAChD,CAAC;oBACD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC9C,OAAO,KAAK,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjD,CAAC;oBACD,2BAA2B;oBAC3B,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtD,OAAO,KAAK,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACnD,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAE1B,eAAe;YACf,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;YACxC,CAAC;YAED,cAAc;YACd,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnC,OAAO,WAAW,IAAI,KAAK,IAAI,YAAY,CAAC;YAC9C,CAAC;YAED,gBAAgB;YAChB,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,GACR,KAAK,CAAC,MAAM,CAAC,OAAO;oBAClB,EAAE,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;qBAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO,QAAQ,IAAI,IAAI,CAAC;YAC1B,CAAC;YAED,oDAAoD;YACpD,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAExB,4CAA4C;gBAC5C,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC/C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;oBAClC,4CAA4C;oBAC5C,MAAM,UAAU,GAAG,KAAK,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;oBAC3D,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;wBACvC,OAAO,gBAAgB,MAAM,OAAO,IAAI,KAAK,CAAC;oBAChD,CAAC;oBACD,OAAO,oBAAoB,IAAI,KAAK,CAAC;gBACvC,CAAC;gBAED,mCAAmC;gBACnC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACjD,OAAO,mBAAmB,IAAI,CAAC,KAAK,KAAK,CAAC;gBAC5C,CAAC;gBAED,sCAAsC;gBACtC,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC/C,OAAO,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;gBAC1C,CAAC;gBAED,gDAAgD;gBAChD,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC/C,OAAO,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;gBACjE,CAAC;gBAED,OAAO,wBAAwB,CAAC;YAClC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,MAAM,QAAQ,GAAG;QACf,oDAAoD;QACpD,wBAAwB;QACxB,kBAAkB;QAClB,oBAAoB;QACpB,OAAO;KACR,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAG,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IACjC,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,kBAAkB,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,yDAAyD;IACzD,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;IAE3E,qDAAqD;IACrD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IAEzE,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/monitor/utils.ts"],"names":[],"mappings":"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"}
|