@cotal-ai/cli 0.139.0 → 0.140.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/dist/commands/history-limit.d.ts +13 -5
- package/dist/commands/history-limit.d.ts.map +1 -1
- package/dist/commands/history-limit.js +211 -89
- package/dist/commands/history-limit.js.map +1 -1
- package/dist/commands/history.d.ts +36 -7
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +14 -10
- package/dist/commands/history.js.map +1 -1
- package/dist/console/mesh.d.ts +1 -1
- package/dist/console/mesh.d.ts.map +1 -1
- package/dist/lib/restore.d.ts.map +1 -1
- package/dist/lib/restore.js +29 -26
- package/dist/lib/restore.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,16 +1,24 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type HistoryLimit, type HistoryLimitStream } from "@cotal-ai/core";
|
|
2
2
|
interface Values {
|
|
3
3
|
space?: string;
|
|
4
4
|
"max-age"?: string;
|
|
5
5
|
"per-sender"?: string;
|
|
6
|
+
"inbox-max-age"?: string;
|
|
7
|
+
"inbox-per-agent"?: string;
|
|
8
|
+
"dm-max-age"?: string;
|
|
9
|
+
"dm-per-sender"?: string;
|
|
6
10
|
yes?: boolean;
|
|
7
11
|
json?: boolean;
|
|
8
12
|
plain?: boolean;
|
|
9
13
|
}
|
|
10
|
-
/**
|
|
11
|
-
export declare
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
+
/** Every limit flag, for the refusals that name them. */
|
|
15
|
+
export declare const HISTORY_LIMIT_FLAGS: ("max-age" | "per-sender" | "inbox-max-age" | "inbox-per-agent" | "dm-max-age" | "dm-per-sender")[];
|
|
16
|
+
/** The requested parts of each stream's limit, refused as usage before any connection. Empty when no
|
|
17
|
+
* limit flag is given, which reads the limits instead. `none` is no age (0) or no count (-1). */
|
|
18
|
+
export declare function historyLimitRequest(values: Values): Map<HistoryLimitStream, Partial<HistoryLimit>>;
|
|
19
|
+
/** `cotal history limit`: show or set how long the space keeps channel posts, the delivery daemon's
|
|
20
|
+
* inbox and stored copies, and DMs. The space root's signing material mints a one-shot provisioner,
|
|
21
|
+
* so this runs on the broker host, from the root. With no limit flag it only reads. */
|
|
14
22
|
export declare function historyLimit(values: Values): Promise<void>;
|
|
15
23
|
export {};
|
|
16
24
|
//# sourceMappingURL=history-limit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-limit.d.ts","sourceRoot":"","sources":["../../src/commands/history-limit.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"history-limit.d.ts","sourceRoot":"","sources":["../../src/commands/history-limit.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAC3C,MAAM,gBAAgB,CAAC;AAOxB,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAChD,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAChD;AAQD,yDAAyD;AACzD,eAAO,MAAM,mBAAmB,qGAAkD,CAAC;AAmCnF;kGACkG;AAClG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CA6BlG;AAkFD;;wFAEwF;AACxF,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2GhE"}
|
|
@@ -1,69 +1,159 @@
|
|
|
1
1
|
import * as prompts from "../lib/prompts.js";
|
|
2
|
-
import {
|
|
2
|
+
import { HISTORY_NO_COUNT, HistoryLimitChanged, HistoryLimitUpdateUnknown, describeHistoryLimit, dialerFor, dlvDurable, formatChatAge, historyAgeProblem, historyLimitOf, historyLimitProblem, historyLimitStreamName, isPrincipalOwnerToken, isPublishPermissionDenied, isStreamNotFound, mintCreds, newIdentity, parseDinboxPrincipal, parseDuration, parseSubject, requireBrokerFloor, setHistoryLimit, standaloneConnectOpts, validateCanonicalBackupStreamConfig, } from "@cotal-ai/core";
|
|
3
3
|
import { JetStreamApiError, jetstreamManager } from "@nats-io/jetstream";
|
|
4
4
|
import { ConfirmationRequired, CommandFailure, authDir, brokerAddressForDisplay, getSpaceAuth, oneLine, presentationOf, recordOperationSpace, resolveMeshTarget, workspaceSecretStore, writeResult } from "@cotal-ai/workspace";
|
|
5
5
|
import { canPrompt } from "./meshes-wizard.js";
|
|
6
6
|
import { yesRequired } from "../lib/confirmation-required.js";
|
|
7
7
|
import { noticeOnInterrupt } from "../lib/interrupt-notice.js";
|
|
8
|
+
/** The flag pairs this command takes, and the streams each sets. One pair sets INBOX and DLV. */
|
|
9
|
+
const PAIRS = [
|
|
10
|
+
{ age: "max-age", count: "per-sender", streams: ["chat"] },
|
|
11
|
+
{ age: "inbox-max-age", count: "inbox-per-agent", streams: ["inbox", "dlv"] },
|
|
12
|
+
{ age: "dm-max-age", count: "dm-per-sender", streams: ["dm"] },
|
|
13
|
+
];
|
|
14
|
+
/** Every limit flag, for the refusals that name them. */
|
|
15
|
+
export const HISTORY_LIMIT_FLAGS = PAIRS.flatMap((pair) => [pair.age, pair.count]);
|
|
16
|
+
/** The streams in the order a change writes them. */
|
|
17
|
+
const ORDER = ["chat", "inbox", "dlv", "dm"];
|
|
18
|
+
const LABEL = { chat: "Channel posts", inbox: "Inbox", dlv: "Stored copies", dm: "DMs" };
|
|
19
|
+
const view = (limit) => ({ maxAgeMs: limit.maxAgeMs === 0 ? null : limit.maxAgeMs, perSubject: limit.perSubject === HISTORY_NO_COUNT ? null : limit.perSubject });
|
|
8
20
|
const usage = (message) => new CommandFailure("refused", "USAGE_INVALID", message);
|
|
9
21
|
const brokerLabel = (server) => brokerAddressForDisplay(server) ?? "selected broker (address unavailable)";
|
|
10
|
-
/** The requested parts of
|
|
22
|
+
/** The requested parts of each stream's limit, refused as usage before any connection. Empty when no
|
|
23
|
+
* limit flag is given, which reads the limits instead. `none` is no age (0) or no count (-1). */
|
|
11
24
|
export function historyLimitRequest(values) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
const request = new Map();
|
|
26
|
+
for (const pair of PAIRS) {
|
|
27
|
+
const age = values[pair.age], count = values[pair.count];
|
|
28
|
+
if (age === undefined && count === undefined)
|
|
29
|
+
continue;
|
|
30
|
+
const part = {};
|
|
31
|
+
if (age !== undefined) {
|
|
32
|
+
if (age === "none")
|
|
33
|
+
part.maxAgeMs = 0;
|
|
34
|
+
else {
|
|
35
|
+
try {
|
|
36
|
+
part.maxAgeMs = parseDuration(age);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
throw usage(`--${pair.age} takes an age such as 30d, 12h or 90m, or none, not "${age}"`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
18
42
|
}
|
|
19
|
-
|
|
20
|
-
|
|
43
|
+
if (count !== undefined) {
|
|
44
|
+
if (count === "none")
|
|
45
|
+
part.perSubject = HISTORY_NO_COUNT;
|
|
46
|
+
else if (/^\d+$/.test(count))
|
|
47
|
+
part.perSubject = Number(count);
|
|
48
|
+
else
|
|
49
|
+
throw usage(`--${pair.count} takes a whole number of at least 1, or none, not "${count}"`);
|
|
50
|
+
}
|
|
51
|
+
for (const stream of pair.streams) {
|
|
52
|
+
// Each given part is checked alone, so its own problem is the one named. A given age is checked
|
|
53
|
+
// as an age, so 0s is refused as below the floor and only none asks for no age.
|
|
54
|
+
const ageProblem = part.maxAgeMs === undefined || age === "none" ? undefined : historyAgeProblem(stream, part.maxAgeMs);
|
|
55
|
+
if (ageProblem)
|
|
56
|
+
throw usage(`--${pair.age}: ${ageProblem}`);
|
|
57
|
+
const countProblem = part.perSubject === undefined ? undefined : historyLimitProblem(stream, { maxAgeMs: 0, perSubject: part.perSubject });
|
|
58
|
+
if (countProblem)
|
|
59
|
+
throw usage(`--${pair.count}: ${countProblem}`);
|
|
60
|
+
request.set(stream, part);
|
|
21
61
|
}
|
|
22
62
|
}
|
|
23
|
-
if (values["per-sender"] !== undefined) {
|
|
24
|
-
if (!/^\d+$/.test(values["per-sender"]))
|
|
25
|
-
throw usage(`--per-sender takes a whole number of at least 1, not "${values["per-sender"]}"`);
|
|
26
|
-
request.perSender = Number(values["per-sender"]);
|
|
27
|
-
}
|
|
28
|
-
// Each given part is checked against a valid other half, so its own problem is the one named.
|
|
29
|
-
const problem = chatHistoryLimitProblem({ maxAgeMs: request.maxAgeMs ?? 86_400_000, perSender: request.perSender ?? 1 });
|
|
30
|
-
if (problem)
|
|
31
|
-
throw usage(`history limit: ${problem}`);
|
|
32
63
|
return request;
|
|
33
64
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
65
|
+
const ageDrops = (from, to) => to.maxAgeMs !== 0 && (from.maxAgeMs === 0 || to.maxAgeMs < from.maxAgeMs);
|
|
66
|
+
const countDrops = (from, to) => to.perSubject !== HISTORY_NO_COUNT && (from.perSubject === HISTORY_NO_COUNT || to.perSubject < from.perSubject);
|
|
67
|
+
/** The lifecycle a dinbox or dlv subject is addressed to, or null. */
|
|
68
|
+
function lifecycleOf(subject, kind) {
|
|
69
|
+
if (kind === "inbox")
|
|
70
|
+
return parseDinboxPrincipal(subject);
|
|
71
|
+
const parts = subject.split(".");
|
|
72
|
+
return parts.length === 6 && parts[2] === "dlv" ? { owner: parts[3], actor: parts[4], lifecycleUid: parts[5] } : null;
|
|
73
|
+
}
|
|
74
|
+
/** Who one subject's entries belong to, as the preview names them. */
|
|
75
|
+
function subjectLabel(kind, subject) {
|
|
76
|
+
if (kind === "chat" || kind === "dm") {
|
|
77
|
+
const p = parseSubject(subject);
|
|
78
|
+
if (!p || !isPrincipalOwnerToken(p.owner))
|
|
79
|
+
return null;
|
|
80
|
+
return kind === "chat" && p.kind === "chat" ? `#${p.rest} from ${p.sender}` : kind === "dm" && p.kind === "inst" ? `to ${p.rest} from ${p.sender}` : null;
|
|
81
|
+
}
|
|
82
|
+
const life = lifecycleOf(subject, kind);
|
|
83
|
+
return life && `${life.owner}.${life.actor} (lifecycle ${life.lifecycleUid})`;
|
|
84
|
+
}
|
|
85
|
+
/** The DLV copies of one lifecycle its own durable has not delivered yet, or null when its info
|
|
86
|
+
* cannot be read. A delivered copy the agent has not acknowledged is not counted: acknowledgements
|
|
87
|
+
* may come in any order, so nothing says which copies those are. */
|
|
88
|
+
async function undeliveredOf(jsm, stream, subject) {
|
|
89
|
+
const life = lifecycleOf(subject, "dlv");
|
|
90
|
+
if (!life)
|
|
91
|
+
return null;
|
|
92
|
+
try {
|
|
93
|
+
const info = await jsm.consumers.info(stream, dlvDurable(life.owner, life.actor, life.lifecycleUid));
|
|
94
|
+
return info.num_pending;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function lowering(jsm, row, readAt) {
|
|
101
|
+
const age = ageDrops(row.from, row.to), count = countDrops(row.from, row.to);
|
|
102
|
+
if (!age && !count)
|
|
38
103
|
return undefined;
|
|
39
104
|
const overCount = [];
|
|
40
|
-
if (
|
|
41
|
-
for (const [subject,
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
|
|
105
|
+
if (count)
|
|
106
|
+
for (const [subject, held] of Object.entries(row.info.state.subjects ?? {})) {
|
|
107
|
+
const label = subjectLabel(row.kind, subject);
|
|
108
|
+
if (held <= row.to.perSubject || label === null)
|
|
109
|
+
continue;
|
|
110
|
+
const dropped = held - row.to.perSubject;
|
|
111
|
+
// The durable delivers in stream order, so the copies it has not delivered are the newest, and
|
|
112
|
+
// those among the oldest ones the count removes are the ones past what the count keeps.
|
|
113
|
+
const undelivered = row.kind === "dlv" ? await undeliveredOf(jsm, row.stream, subject) : undefined;
|
|
114
|
+
overCount.push({ subject: label, dropped, ...(undelivered !== undefined ? { undelivered: undelivered === null ? null : Math.min(dropped, Math.max(0, undelivered - row.to.perSubject)) } : {}) });
|
|
45
115
|
}
|
|
46
|
-
overCount.sort((a, b) => a.
|
|
47
|
-
return { readAt: readAt.toISOString(), overCount, olderThan:
|
|
116
|
+
overCount.sort((a, b) => a.subject.localeCompare(b.subject));
|
|
117
|
+
return { stream: row.stream, readAt: readAt.toISOString(), overCount, olderThan: age ? formatChatAge(row.to.maxAgeMs) : null, oldestAt: row.info.state.messages > 0 ? row.info.state.first_ts : null };
|
|
48
118
|
}
|
|
49
|
-
|
|
50
|
-
|
|
119
|
+
const ENTRY = { chat: "post", inbox: "entry", dlv: "stored copy", dm: "DM" };
|
|
120
|
+
const ENTRIES = { chat: "posts", inbox: "entries", dlv: "stored copies", dm: "DMs" };
|
|
121
|
+
function loweringLines(row, snapshot) {
|
|
122
|
+
const dropped = snapshot.overCount.reduce((sum, item) => sum + item.dropped, 0);
|
|
123
|
+
const lost = {
|
|
124
|
+
chat: [],
|
|
125
|
+
inbox: [" These may include entries the delivery daemon has not passed on to their agents yet."],
|
|
126
|
+
dlv: [" These may also include copies delivered to their agents and not acknowledged yet."],
|
|
127
|
+
dm: [" These may include DMs their recipients have not read yet."],
|
|
128
|
+
}[row.kind];
|
|
51
129
|
return [
|
|
52
|
-
|
|
53
|
-
...(snapshot.olderThan !== null ? [` every
|
|
54
|
-
...(snapshot.overCount.length ? [
|
|
130
|
+
`${LABEL[row.kind]} (${snapshot.stream}), as read at ${snapshot.readAt}:`,
|
|
131
|
+
...(snapshot.olderThan !== null ? [` every ${ENTRY[row.kind]} older than ${snapshot.olderThan} (the oldest is from ${snapshot.oldestAt ?? "no time; the stream holds none"})`] : []),
|
|
132
|
+
...(snapshot.overCount.length ? [
|
|
133
|
+
` ${dropped} ${ENTRIES[row.kind]} past the new count:`,
|
|
134
|
+
...snapshot.overCount.map((item) => ` ${item.subject}: ${item.dropped}${item.undelivered === undefined ? "" : item.undelivered === null ? ", not delivered yet: unknown" : `, ${item.undelivered} not delivered yet`}`),
|
|
135
|
+
] : []),
|
|
136
|
+
...(snapshot.olderThan !== null || snapshot.overCount.length ? lost : []),
|
|
55
137
|
];
|
|
56
138
|
}
|
|
57
|
-
/**
|
|
58
|
-
|
|
139
|
+
/** What a change left behind, named per stream, for a failure that changed some of them. */
|
|
140
|
+
function outcomeLines(rows) {
|
|
141
|
+
return rows.filter((row) => row.outcome !== "unchanged").map((row) => `${row.stream} ${row.outcome}`).join(", ");
|
|
142
|
+
}
|
|
143
|
+
const READ_REMEDY = "run `cotal history limit` with no limit flags to read the limits the streams hold";
|
|
144
|
+
const READ_HINT = "`cotal history limit` with no limit flags shows the limits the streams hold.";
|
|
145
|
+
/** `cotal history limit`: show or set how long the space keeps channel posts, the delivery daemon's
|
|
146
|
+
* inbox and stored copies, and DMs. The space root's signing material mints a one-shot provisioner,
|
|
147
|
+
* so this runs on the broker host, from the root. With no limit flag it only reads. */
|
|
59
148
|
export async function historyLimit(values) {
|
|
60
149
|
const presentation = presentationOf(values);
|
|
61
150
|
const request = historyLimitRequest(values);
|
|
62
|
-
|
|
63
|
-
|
|
151
|
+
const readOnly = request.size === 0;
|
|
152
|
+
if (!readOnly && !values.yes && (!canPrompt() || presentation === "json"))
|
|
153
|
+
throw new ConfirmationRequired(yesRequired("history limit", presentation === "json"), { remedy: "add --yes to set the limit without a prompt; a lower limit deletes the entries it no longer keeps" });
|
|
64
154
|
const selected = resolveMeshTarget(process.cwd(), { ...(values.space ? { space: values.space } : {}) });
|
|
65
|
-
const
|
|
66
|
-
const target = { space: selected.space, broker: brokerLabel(selected.server),
|
|
155
|
+
const kinds = readOnly ? ORDER : ORDER.filter((kind) => request.has(kind));
|
|
156
|
+
const target = { space: selected.space, broker: brokerLabel(selected.server), streams: kinds.map((kind) => historyLimitStreamName(selected.space, kind)) };
|
|
67
157
|
recordOperationSpace(selected.space);
|
|
68
158
|
let provisioner;
|
|
69
159
|
if (selected.mode !== "open") {
|
|
@@ -83,66 +173,98 @@ export async function historyLimit(values) {
|
|
|
83
173
|
try {
|
|
84
174
|
requireBrokerFloor(nc);
|
|
85
175
|
const jsm = await jetstreamManager(nc, { checkAPI: false });
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
176
|
+
// Every requested stream is read and checked before the first write, so a refusal on a later
|
|
177
|
+
// stream never comes after an earlier one changed.
|
|
178
|
+
const rows = [];
|
|
179
|
+
for (const kind of kinds) {
|
|
180
|
+
const stream = historyLimitStreamName(selected.space, kind);
|
|
181
|
+
const part = request.get(kind);
|
|
182
|
+
let info;
|
|
183
|
+
try {
|
|
184
|
+
// A subject listing only where a count may drop: it names every sender, agent or DM pair.
|
|
185
|
+
info = await jsm.streams.info(stream, part?.perSubject !== undefined ? { subjects_filter: ">" } : undefined);
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
if (isStreamNotFound(error))
|
|
189
|
+
throw new CommandFailure("refused", "TARGET_NOT_FOUND", `space ${selected.space} has no ${stream} stream; nothing was changed`, { target, remedy: "start the space with `cotal up`, which creates it" });
|
|
190
|
+
if (isPublishPermissionDenied(error))
|
|
191
|
+
throw new CommandFailure("refused", "PERMISSION_DENIED", `the provisioner was refused a read of ${stream}; nothing was changed`, { target });
|
|
192
|
+
throw new CommandFailure("refused", "TARGET_UNAVAILABLE", `${stream} could not be read (${error.message}); nothing was changed`, { target });
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
validateCanonicalBackupStreamConfig(selected.space, stream, info.config);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
throw new CommandFailure("refused", "CONFLICT", `${stream} has settings this command does not manage (${error.message}); nothing was changed`, { target });
|
|
199
|
+
}
|
|
200
|
+
const from = historyLimitOf(info.config);
|
|
201
|
+
rows.push({ kind, stream, info, from, to: { maxAgeMs: part?.maxAgeMs ?? from.maxAgeMs, perSubject: part?.perSubject ?? from.perSubject } });
|
|
96
202
|
}
|
|
97
203
|
const readAt = new Date();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
throw new CommandFailure("refused", "CONFLICT", `the chat stream has settings this command does not manage (${error.message}); nothing was changed`, { target });
|
|
204
|
+
const limitRows = (rowsOf, pick) => rowsOf.map((row) => [LABEL[row.kind], describeHistoryLimit(row.kind, pick(row))]);
|
|
205
|
+
if (readOnly) {
|
|
206
|
+
writeResult(presentation, { command: "history", target, result: { kind: "history-limits", streams: rows.map((row) => ({ stream: row.stream, limit: row.kind, holds: view(row.from) })) } }, () => ({ sections: [{ title: "History limits", blocks: [{ kind: "fields", rows: [["Space", selected.space], ...limitRows(rows, (row) => row.from)] }] }] }));
|
|
207
|
+
return;
|
|
103
208
|
}
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const problem = chatHistoryLimitProblem(to);
|
|
109
|
-
if (problem)
|
|
110
|
-
throw usage(`history limit: ${problem}`);
|
|
111
|
-
if (from.maxAgeMs === to.maxAgeMs && from.perSender === to.perSender) {
|
|
112
|
-
writeResult(presentation, { command: "history", target, result: { kind: "history-limit", from, to, changed: false }, noOp: true }, () => ({ sections: [{ title: "History limit unchanged", blocks: [{ kind: "fields", rows: [["Space", selected.space], ["Limit", describeChatHistory(to)]] }, { kind: "lines", lines: ["The chat stream already holds this limit. Nothing was written."] }] }] }));
|
|
209
|
+
const resultOf = (changed, extra = {}) => ({ kind: "history-limit", changed, streams: rows.map((row) => ({ stream: row.stream, limit: row.kind, from: view(row.from), to: view(row.to), outcome: row.outcome ?? "unchanged" })), ...extra });
|
|
210
|
+
const changing = rows.filter((row) => row.from.maxAgeMs !== row.to.maxAgeMs || row.from.perSubject !== row.to.perSubject);
|
|
211
|
+
if (changing.length === 0) {
|
|
212
|
+
writeResult(presentation, { command: "history", target, result: resultOf(false), noOp: true }, () => ({ sections: [{ title: "History limits unchanged", blocks: [{ kind: "fields", rows: [["Space", selected.space], ...limitRows(rows, (row) => row.to)] }, { kind: "lines", lines: ["The streams already hold these limits. Nothing was written."] }] }] }));
|
|
113
213
|
return;
|
|
114
214
|
}
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
215
|
+
const snapshots = [];
|
|
216
|
+
for (const row of changing) {
|
|
217
|
+
const snapshot = await lowering(jsm, row, readAt);
|
|
218
|
+
if (snapshot)
|
|
219
|
+
snapshots.push(snapshot);
|
|
220
|
+
}
|
|
221
|
+
if (!values.yes && snapshots.length) {
|
|
222
|
+
if (snapshots.some((snapshot) => snapshot.stream !== historyLimitStreamName(selected.space, "chat")))
|
|
223
|
+
process.stderr.write("As the space's operator you see every agent and DM pair these streams hold entries for.\n");
|
|
224
|
+
for (const row of changing) {
|
|
225
|
+
const snapshot = snapshots.find((item) => item.stream === row.stream);
|
|
226
|
+
if (snapshot)
|
|
227
|
+
for (const line of loweringLines(row, snapshot))
|
|
228
|
+
process.stderr.write(`${line}\n`);
|
|
229
|
+
}
|
|
230
|
+
const answer = await prompts.confirm({ message: `Change the history limits of ${oneLine(selected.space)}: ${changing.map((row) => `${row.stream} to ${describeHistoryLimit(row.kind, row.to)}`).join("; ")}? The broker deletes these entries at once.`, initialValue: false });
|
|
120
231
|
if (prompts.isCancel(answer) || !answer) {
|
|
121
|
-
|
|
232
|
+
for (const row of rows)
|
|
233
|
+
row.to = row.from;
|
|
234
|
+
writeResult(presentation, { command: "history", target, result: { ...resultOf(false), confirmed: false }, noOp: true }, () => ({ sections: [{ title: "History limits kept", blocks: [{ kind: "fields", rows: [["Space", selected.space], ...limitRows(rows, (row) => row.from)] }, { kind: "lines", lines: ["Nothing was written."] }] }] }));
|
|
122
235
|
return;
|
|
123
236
|
}
|
|
124
237
|
}
|
|
125
|
-
release = noticeOnInterrupt(() =>
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
238
|
+
release = noticeOnInterrupt(() => `Interrupted while the history limit updates ran; each may or may not have taken effect. ${READ_HINT}`);
|
|
239
|
+
for (const row of rows)
|
|
240
|
+
row.outcome = changing.includes(row) ? "not-attempted" : "unchanged";
|
|
241
|
+
for (const row of changing) {
|
|
242
|
+
try {
|
|
243
|
+
const change = await setHistoryLimit(jsm, selected.space, row.kind, row.to, row.from);
|
|
244
|
+
row.outcome = change ? "changed" : "unchanged";
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
const before = rows.filter((item) => item.outcome === "changed");
|
|
248
|
+
if (error instanceof HistoryLimitUpdateUnknown) {
|
|
249
|
+
row.outcome = "unknown";
|
|
250
|
+
throw new CommandFailure("unknown", "OPERATION_UNKNOWN", `${error.message}; it was not retried (${outcomeLines(rows)})`, { target, native: { outcome: "unknown" }, changed: before.map((item) => item.stream), remedy: `${READ_REMEDY}; an unknown result does not mean nothing changed` });
|
|
251
|
+
}
|
|
252
|
+
row.outcome = "refused";
|
|
253
|
+
const reason = error instanceof HistoryLimitChanged ? error.message
|
|
254
|
+
: isPublishPermissionDenied(error) ? `the broker refused the history limit update of ${row.stream}`
|
|
255
|
+
: error instanceof JetStreamApiError ? `the broker refused the history limit update of ${row.stream} (${error.message})`
|
|
256
|
+
: `${row.stream} could not be read again before the update (${error.message})`;
|
|
257
|
+
if (before.length === 0)
|
|
258
|
+
throw new CommandFailure("refused", error instanceof HistoryLimitChanged || error instanceof JetStreamApiError ? "CONFLICT" : isPublishPermissionDenied(error) ? "PERMISSION_DENIED" : "TARGET_UNAVAILABLE", `${reason}; nothing was changed`, { target, remedy: "run the command again to act on the limits the streams hold now" });
|
|
259
|
+
throw new CommandFailure("partial", "OPERATION_PARTIAL", `${reason}; ${outcomeLines(rows)}`, { target, changed: before.map((item) => item.stream), remedy: READ_REMEDY });
|
|
260
|
+
}
|
|
140
261
|
}
|
|
141
262
|
const lines = [
|
|
142
|
-
|
|
143
|
-
"
|
|
263
|
+
...changing.map((row) => `${row.stream} now keeps ${describeHistoryLimit(row.kind, row.to)}.`),
|
|
264
|
+
...(changing.some((row) => row.to.maxAgeMs === 0 && row.to.perSubject === HISTORY_NO_COUNT) ? ["With no age and no count limit, only the server's storage limit bounds a stream; a full store refuses new messages."] : []),
|
|
265
|
+
"Entries the broker deleted under an earlier limit do not come back.",
|
|
144
266
|
];
|
|
145
|
-
writeResult(presentation, { command: "history", target, result:
|
|
267
|
+
writeResult(presentation, { command: "history", target, result: resultOf(true, snapshots.length ? { lowered: snapshots } : {}) }, () => ({ sections: [{ title: "History limits changed", blocks: [{ kind: "fields", rows: [["Space", selected.space], ["Broker", target.broker], ...changing.flatMap((row) => [[`${LABEL[row.kind]} before`, describeHistoryLimit(row.kind, row.from)], [`${LABEL[row.kind]} now`, describeHistoryLimit(row.kind, row.to)]])] }, { kind: "lines", lines }] }] }));
|
|
146
268
|
}
|
|
147
269
|
finally {
|
|
148
270
|
release?.();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-limit.js","sourceRoot":"","sources":["../../src/commands/history-limit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"history-limit.js","sourceRoot":"","sources":["../../src/commands/history-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EACpL,sBAAsB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EACzL,eAAe,EAAE,qBAAqB,EAAE,mCAAmC,GAE5E,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAA0C,MAAM,oBAAoB,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AAC7O,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAU/D,iGAAiG;AACjG,MAAM,KAAK,GAAG;IACZ,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;IAC1D,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;IAC7E,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;CACtD,CAAC;AACX,yDAAyD;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnF,qDAAqD;AACrD,MAAM,KAAK,GAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5E,MAAM,KAAK,GAAuC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAI7H,MAAM,IAAI,GAAG,CAAC,KAAmB,EAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;AAyB3L,MAAM,KAAK,GAAG,CAAC,OAAe,EAAkB,EAAE,CAAC,IAAI,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AAC3G,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,uCAAuC,CAAC;AAE3H;kGACkG;AAClG,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6C,CAAC;IACrE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QACvD,MAAM,IAAI,GAA0B,EAAE,CAAC;QACvC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,GAAG,KAAK,MAAM;gBAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;iBACjC,CAAC;gBACJ,IAAI,CAAC;oBAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;gBAAC,CAAC;gBAC3C,MAAM,CAAC;oBAAC,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,wDAAwD,GAAG,GAAG,CAAC,CAAC;gBAAC,CAAC;YACrG,CAAC;QACH,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,KAAK,KAAK,MAAM;gBAAE,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC;iBACpD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;gBACzD,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,sDAAsD,KAAK,GAAG,CAAC,CAAC;QAClG,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,gGAAgG;YAChG,gFAAgF;YAChF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxH,IAAI,UAAU;gBAAE,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3I,IAAI,YAAY;gBAAE,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,IAAkB,EAAE,EAAgB,EAAW,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9I,MAAM,UAAU,GAAG,CAAC,IAAkB,EAAE,EAAgB,EAAW,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,gBAAgB,IAAI,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAEtL,sEAAsE;AACtE,SAAS,WAAW,CAAC,OAAe,EAAE,IAAqB;IACzD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3H,CAAC;AAED,sEAAsE;AACtE,SAAS,YAAY,CAAC,IAAwB,EAAE,OAAe;IAC7D,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5J,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,YAAY,GAAG,CAAC;AAChF,CAAC;AAED;;qEAEqE;AACrE,KAAK,UAAU,aAAa,CAAC,GAAqB,EAAE,MAAc,EAAE,OAAe;IACjF,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACrG,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAqB,EAAE,GAAQ,EAAE,MAAY;IACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,SAAS,GAAkC,EAAE,CAAC;IACpD,IAAI,KAAK;QAAE,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;YACvF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC;YACzC,+FAA+F;YAC/F,wFAAwF;YACxF,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnG,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpM,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzM,CAAC;AAED,MAAM,KAAK,GAAuC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACjH,MAAM,OAAO,GAAuC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAEzH,SAAS,aAAa,CAAC,GAAQ,EAAE,QAA0B;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC,wFAAwF,CAAC;QACjG,GAAG,EAAE,CAAC,qFAAqF,CAAC;QAC5F,EAAE,EAAE,CAAC,6DAA6D,CAAC;KACpE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO;QACL,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,iBAAiB,QAAQ,CAAC,MAAM,GAAG;QACzE,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,SAAS,wBAAwB,QAAQ,CAAC,QAAQ,IAAI,gCAAgC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrL,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB;YACvD,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,oBAAoB,EAAE,CAAC;SAC3N,CAAC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,SAAS,YAAY,CAAC,IAAoB;IACxC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnH,CAAC;AAED,MAAM,WAAW,GAAG,mFAAmF,CAAC;AACxG,MAAM,SAAS,GAAG,8EAA8E,CAAC;AAEjG;;wFAEwF;AACxF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,YAAY,KAAK,MAAM,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,WAAW,CAAC,eAAe,EAAE,YAAY,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,mGAAmG,EAAE,CAAC,CAAC;IAClR,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxG,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;IAC3J,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,WAA+B,CAAC;IACpC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrF,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,mBAAmB,EAAE,SAAS,QAAQ,CAAC,KAAK,gCAAgC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAC,CAAC;QACpP,WAAW,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,EAAE,CAAC;IACP,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,qBAAqB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC;IACrL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,oBAAoB,EAAE,6CAA8C,KAAe,CAAC,OAAO,wBAAwB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACvK,CAAC;IACD,IAAI,OAAiC,CAAC;IACtC,IAAI,CAAC;QACH,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,6FAA6F;QAC7F,mDAAmD;QACnD,MAAM,IAAI,GAAU,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,0FAA0F;gBAC1F,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/G,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,gBAAgB,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,QAAQ,CAAC,KAAK,WAAW,MAAM,8BAA8B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,mDAAmD,EAAE,CAAC,CAAC;gBACtO,IAAI,yBAAyB,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,mBAAmB,EAAE,yCAAyC,MAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACnL,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,uBAAwB,KAAe,CAAC,OAAO,wBAAwB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1J,CAAC;YACD,IAAI,CAAC;gBAAC,mCAAmC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAA4C,CAAC,CAAC;YAAC,CAAC;YACvH,OAAO,KAAK,EAAE,CAAC;gBAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,+CAAgD,KAAe,CAAC,OAAO,wBAAwB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAAC,CAAC;YACxL,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,MAA4C,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9I,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,CAAC,MAAsB,EAAE,IAAgC,EAAsB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtL,IAAI,QAAQ,EAAE,CAAC;YACb,WAAW,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACjW,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAE,QAAiC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC/Q,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC1H,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,6DAA6D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvW,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAuB,EAAE,CAAC;QACzC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,QAAQ;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAC;YACpH,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;gBACtE,IAAI,QAAQ;oBAAE,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;YACnG,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,gCAAgC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YAChR,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxC,KAAK,MAAM,GAAG,IAAI,IAAI;oBAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;gBAC1C,WAAW,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtV,OAAO;YACT,CAAC;QACH,CAAC;QACD,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC,2FAA2F,SAAS,EAAE,CAAC,CAAC;QAC1I,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;QAC7F,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtF,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;gBACjE,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;oBAC/C,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC;oBACxB,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC,OAAO,yBAAyB,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,mDAAmD,EAAE,CAAC,CAAC;gBAC9R,CAAC;gBACD,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC;gBACxB,MAAM,MAAM,GAAG,KAAK,YAAY,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;oBACjE,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kDAAkD,GAAG,CAAC,MAAM,EAAE;wBACnG,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC,CAAC,CAAC,kDAAkD,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO,GAAG;4BACxH,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,+CAAgD,KAAe,CAAC,OAAO,GAAG,CAAC;gBAC5F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,KAAK,YAAY,mBAAmB,IAAI,KAAK,YAAY,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,EAAE,GAAG,MAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iEAAiE,EAAE,CAAC,CAAC;gBAC/V,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5K,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG;YACZ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,cAAc,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;YAC9F,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,UAAU,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,qHAAqH,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3N,qEAAqE;SACtE,CAAC;QACF,WAAW,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAsB,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChgB,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -61,13 +61,33 @@ export declare const historyFlags: readonly [{
|
|
|
61
61
|
}, {
|
|
62
62
|
readonly name: "max-age";
|
|
63
63
|
readonly type: "string";
|
|
64
|
-
readonly value: "<age>";
|
|
65
|
-
readonly description: "limit: delete a channel post once it is older than this, such as 30d or 12h (at least 2m)";
|
|
64
|
+
readonly value: "<age|none>";
|
|
65
|
+
readonly description: "limit: delete a channel post once it is older than this, such as 30d or 12h (at least 2m), or none";
|
|
66
66
|
}, {
|
|
67
67
|
readonly name: "per-sender";
|
|
68
68
|
readonly type: "string";
|
|
69
|
-
readonly value: "<n>";
|
|
70
|
-
readonly description: "limit: keep this many of each sender's newest posts on each channel";
|
|
69
|
+
readonly value: "<n|none>";
|
|
70
|
+
readonly description: "limit: keep this many of each sender's newest posts on each channel, or none";
|
|
71
|
+
}, {
|
|
72
|
+
readonly name: "inbox-max-age";
|
|
73
|
+
readonly type: "string";
|
|
74
|
+
readonly value: "<age|none>";
|
|
75
|
+
readonly description: "limit: delete an agent's stored copy of a channel post once it is older than this (at least 2h), or none";
|
|
76
|
+
}, {
|
|
77
|
+
readonly name: "inbox-per-agent";
|
|
78
|
+
readonly type: "string";
|
|
79
|
+
readonly value: "<n|none>";
|
|
80
|
+
readonly description: "limit: keep this many of each agent's newest stored copies, or none";
|
|
81
|
+
}, {
|
|
82
|
+
readonly name: "dm-max-age";
|
|
83
|
+
readonly type: "string";
|
|
84
|
+
readonly value: "<age|none>";
|
|
85
|
+
readonly description: "limit: delete a DM once it is older than this (at least 2m), or none";
|
|
86
|
+
}, {
|
|
87
|
+
readonly name: "dm-per-sender";
|
|
88
|
+
readonly type: "string";
|
|
89
|
+
readonly value: "<n|none>";
|
|
90
|
+
readonly description: "limit: keep this many of each sender's newest DMs to each agent, or none";
|
|
71
91
|
}, {
|
|
72
92
|
readonly name: "json";
|
|
73
93
|
readonly short: "j";
|
|
@@ -94,16 +114,25 @@ export declare const historySubcommands: readonly [{
|
|
|
94
114
|
readonly prepareMeshTarget: false;
|
|
95
115
|
}, {
|
|
96
116
|
readonly name: "limit";
|
|
97
|
-
readonly flagNames: readonly ["space", "max-age", "per-sender", "yes", "json", "plain"];
|
|
98
|
-
readonly summary: "set how long the space keeps channel posts, by age and
|
|
117
|
+
readonly flagNames: readonly ["space", "max-age", "per-sender", "inbox-max-age", "inbox-per-agent", "dm-max-age", "dm-per-sender", "yes", "json", "plain"];
|
|
118
|
+
readonly summary: "show or set how long the space keeps channel posts, stored copies and DMs, by age and count; run it from the space root on the broker host";
|
|
99
119
|
readonly examples: readonly [{
|
|
120
|
+
readonly command: "cotal history limit";
|
|
121
|
+
readonly note: "show the limits the space holds";
|
|
122
|
+
}, {
|
|
100
123
|
readonly command: "cotal history limit --max-age 7d";
|
|
101
124
|
readonly note: "delete channel posts once they are a week old";
|
|
102
125
|
}, {
|
|
103
126
|
readonly command: "cotal history limit --per-sender 500 --yes";
|
|
104
127
|
readonly note: "keep each sender's newest 500 posts on each channel, without a prompt";
|
|
128
|
+
}, {
|
|
129
|
+
readonly command: "cotal history limit --inbox-per-agent 5000";
|
|
130
|
+
readonly note: "keep each agent's newest 5000 stored copies";
|
|
131
|
+
}, {
|
|
132
|
+
readonly command: "cotal history limit --dm-max-age 90d";
|
|
133
|
+
readonly note: "delete DMs once they are 90 days old";
|
|
105
134
|
}];
|
|
106
|
-
readonly usage: "cotal history limit [--max-age <age>] [--per-sender <n>] [-y|--yes] [--json|--plain]";
|
|
135
|
+
readonly usage: "cotal history limit [--max-age <age|none>] [--per-sender <n|none>] [--inbox-max-age <age|none>] [--inbox-per-agent <n|none>] [--dm-max-age <age|none>] [--dm-per-sender <n|none>] [-y|--yes] [--json|--plain]";
|
|
107
136
|
readonly outputs: readonly ["json", "plain"];
|
|
108
137
|
readonly prepareMeshTarget: false;
|
|
109
138
|
}];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsF,KAAK,gBAAgB,EAAqD,KAAK,UAAU,EAAqG,MAAM,gBAAgB,CAAC;AACjU,OAAO,EAgBL,KAAK,UAAU,EAEf,KAAK,aAAa,EAInB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
|