@songsid/agend 2.3.2-beta.8 → 2.3.2
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 +6 -0
- package/README.zh-TW.md +6 -0
- package/dist/agent-cli.js +48 -0
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +6 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-whats-new.js +3 -0
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.js +2 -0
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/claude-code.js +23 -1
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-session-lookup.d.ts +15 -0
- package/dist/backend/codex-session-lookup.js +58 -0
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/codex.js +15 -4
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/kiro-classic-archive.d.ts +57 -0
- package/dist/backend/kiro-classic-archive.js +622 -0
- package/dist/backend/kiro-classic-archive.js.map +1 -0
- package/dist/backend/kiro-classic-links.d.ts +24 -0
- package/dist/backend/kiro-classic-links.js +135 -0
- package/dist/backend/kiro-classic-links.js.map +1 -0
- package/dist/backend/kiro-identity.d.ts +100 -1
- package/dist/backend/kiro-identity.js +262 -31
- package/dist/backend/kiro-identity.js.map +1 -1
- package/dist/backend/kiro-migration-verify.d.ts +10 -0
- package/dist/backend/kiro-migration-verify.js +52 -0
- package/dist/backend/kiro-migration-verify.js.map +1 -0
- package/dist/backend/kiro-reconcile-store.d.ts +27 -0
- package/dist/backend/kiro-reconcile-store.js +344 -0
- package/dist/backend/kiro-reconcile-store.js.map +1 -0
- package/dist/backend/kiro-v2-store-worker.js +35 -1
- package/dist/backend/kiro-v2-store-worker.js.map +1 -1
- package/dist/backend/kiro-v2-store.d.ts +31 -1
- package/dist/backend/kiro-v2-store.js +22 -12
- package/dist/backend/kiro-v2-store.js.map +1 -1
- package/dist/backend/kiro.d.ts +124 -1
- package/dist/backend/kiro.js +553 -29
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +102 -0
- package/dist/backend/types.js +9 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/cache-service.d.ts +13 -1
- package/dist/cache-service.js +45 -2
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/ipc-timeouts.js +3 -0
- package/dist/channel/ipc-timeouts.js.map +1 -1
- package/dist/channel/mcp-tools.js +40 -5
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/tool-router.js +2 -1
- package/dist/channel/tool-router.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +6 -0
- package/dist/classic-channel-manager.js +25 -0
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +50 -4
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.d.ts +7 -1
- package/dist/config-validator.js +17 -8
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +66 -0
- package/dist/daemon.js +421 -19
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +15 -4
- package/dist/dashboard-permissions.js +49 -23
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/doctor.js +2 -1
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-control-audit.d.ts +1 -1
- package/dist/fleet-control-audit.js +3 -0
- package/dist/fleet-control-audit.js.map +1 -1
- package/dist/fleet-manager.d.ts +90 -3
- package/dist/fleet-manager.js +569 -41
- package/dist/fleet-manager.js.map +1 -1
- package/dist/forged-envelope-scan.d.ts +9 -0
- package/dist/forged-envelope-scan.js +30 -5
- package/dist/forged-envelope-scan.js.map +1 -1
- package/dist/general-instance.d.ts +24 -0
- package/dist/general-instance.js +53 -0
- package/dist/general-instance.js.map +1 -1
- package/dist/general-knowledge/skills/docker-install/SKILL.md +25 -0
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +5 -3
- package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -1
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +34 -0
- package/dist/general-knowledge/skills/session-management/SKILL.md +1 -1
- package/dist/general-knowledge/skills/tui-effort/SKILL.md +1 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +32 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +32 -0
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +60 -18
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +60 -18
- package/dist/instance-config-impact.js +3 -2
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +4 -0
- package/dist/instance-lifecycle.js +7 -0
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/kiro-migrate.d.ts +19 -2
- package/dist/kiro-migrate.js +133 -35
- package/dist/kiro-migrate.js.map +1 -1
- package/dist/kiro-reconcile.d.ts +21 -0
- package/dist/kiro-reconcile.js +88 -0
- package/dist/kiro-reconcile.js.map +1 -0
- package/dist/kiro-session-proof.d.ts +41 -0
- package/dist/kiro-session-proof.js +89 -0
- package/dist/kiro-session-proof.js.map +1 -0
- package/dist/kiro-tui-forensic.d.ts +19 -0
- package/dist/kiro-tui-forensic.js +124 -0
- package/dist/kiro-tui-forensic.js.map +1 -0
- package/dist/locale.js +198 -0
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +2 -2
- package/dist/log-service.js.map +1 -1
- package/dist/needs-you.d.ts +3 -1
- package/dist/needs-you.js +4 -2
- package/dist/needs-you.js.map +1 -1
- package/dist/office-levels.d.ts +64 -0
- package/dist/office-levels.js +66 -0
- package/dist/office-levels.js.map +1 -0
- package/dist/office-share-page.d.ts +3 -1
- package/dist/office-share-page.js +8 -3
- package/dist/office-share-page.js.map +1 -1
- package/dist/office-share-service.d.ts +6 -3
- package/dist/office-share-service.js +12 -8
- package/dist/office-share-service.js.map +1 -1
- package/dist/office-share.d.ts +80 -13
- package/dist/office-share.js +145 -25
- package/dist/office-share.js.map +1 -1
- package/dist/outbound-handlers.js +20 -1
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +47 -2
- package/dist/outbound-schemas.js +41 -2
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +1 -1
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/quickstart-api.d.ts +39 -1
- package/dist/quickstart-api.js +115 -17
- package/dist/quickstart-api.js.map +1 -1
- package/dist/remote-card-answer.d.ts +83 -0
- package/dist/remote-card-answer.js +208 -0
- package/dist/remote-card-answer.js.map +1 -0
- package/dist/remote-card-prompt.d.ts +38 -0
- package/dist/remote-card-prompt.js +86 -0
- package/dist/remote-card-prompt.js.map +1 -0
- package/dist/scheduler/task-board.d.ts +28 -6
- package/dist/scheduler/task-board.js +66 -11
- package/dist/scheduler/task-board.js.map +1 -1
- package/dist/service-installer.d.ts +13 -0
- package/dist/service-installer.js +15 -0
- package/dist/service-installer.js.map +1 -1
- package/dist/service-owner.d.ts +25 -0
- package/dist/service-owner.js +43 -2
- package/dist/service-owner.js.map +1 -1
- package/dist/settings-api.d.ts +2 -0
- package/dist/settings-api.js +18 -12
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +10 -5
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +7 -4
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-instance-patch.js +1 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-form.d.ts +2 -2
- package/dist/setup-form.js +139 -93
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-i18n.d.ts +25 -0
- package/dist/setup-i18n.js +226 -0
- package/dist/setup-i18n.js.map +1 -0
- package/dist/task-board-waker.js +7 -2
- package/dist/task-board-waker.js.map +1 -1
- package/dist/tool-permissions.js +18 -0
- package/dist/tool-permissions.js.map +1 -1
- package/dist/transcript-sources.d.ts +1 -0
- package/dist/transcript-sources.js +20 -3
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/ui/backend-signin.js +4 -3
- package/dist/ui/chat-store.js +3 -2
- package/dist/ui/chat-strings.js +2 -2
- package/dist/ui/fleet-office-card.js +114 -0
- package/dist/ui/fleet-office-editor.js +81 -9
- package/dist/ui/fleet-office-layout.js +87 -10
- package/dist/ui/fleet-office-levels.js +105 -0
- package/dist/ui/fleet-office-model.js +9 -1
- package/dist/ui/fleet-office-pack.d.ts +18 -3
- package/dist/ui/fleet-office-pack.js +217 -23
- package/dist/ui/fleet-office-skin.js +39 -3
- package/dist/ui/fleet-office-store.js +74 -3
- package/dist/ui/fleet-office-view.js +8 -0
- package/dist/ui/fleet-office-zones.js +102 -19
- package/dist/ui/fleet-office.js +323 -50
- package/dist/ui/fleet-org.js +2 -0
- package/dist/ui/fleet-task-card.js +2 -2
- package/dist/ui/fleet-task-common.js +30 -7
- package/dist/ui/fleet-task-work.js +2 -2
- package/dist/ui/fleet-tasks.js +10 -11
- package/dist/ui/office-share-dialog.js +31 -7
- package/dist/ui/office-share-page.js +50 -1
- package/dist/ui/panel-chat.js +14 -2
- package/dist/ui/panel-log.js +4 -4
- package/dist/ui/panel-needs.js +1 -1
- package/dist/ui/panel-settings.js +16 -8
- package/dist/ui/settings-discord.js +3 -2
- package/dist/ui/settings-guests.js +17 -7
- package/dist/ui/settings-model.js +17 -9
- package/dist/ui/settings-registry.js +1 -0
- package/dist/ui/settings-strings.js +16 -4
- package/dist/ui/settings-token.js +3 -2
- package/dist/ui/settings-wizard.js +25 -9
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-stream.js +1 -1
- package/dist/ui/shared/app.css +74 -2
- package/dist/ui/shared/setup-host-text.js +107 -0
- package/dist/ui/structured-signin.js +89 -38
- package/dist/usage-rollup.d.ts +34 -3
- package/dist/usage-rollup.js +56 -3
- package/dist/usage-rollup.js.map +1 -1
- package/dist/web-api.d.ts +10 -1
- package/dist/web-api.js +207 -17
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +1 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-office-acts.d.ts +5 -2
- package/dist/web-office-acts.js +9 -4
- package/dist/web-office-acts.js.map +1 -1
- package/dist/web-office-pack-read.d.ts +35 -0
- package/dist/web-office-pack-read.js +252 -0
- package/dist/web-office-pack-read.js.map +1 -0
- package/dist/web-office-pack-tools.d.ts +241 -0
- package/dist/web-office-pack-tools.js +785 -0
- package/dist/web-office-pack-tools.js.map +1 -0
- package/dist/web-office-skins.d.ts +68 -4
- package/dist/web-office-skins.js +324 -33
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-office-store.d.ts +47 -4
- package/dist/web-office-store.js +149 -15
- package/dist/web-office-store.js.map +1 -1
- package/dist/web-settings-patch.d.ts +3 -1
- package/dist/web-settings-patch.js +4 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/workflow-templates/default.md +1 -1
- package/package.json +2 -2
- package/templates/windows-shortcuts.ps1 +18 -17
package/dist/web-office-skins.js
CHANGED
|
@@ -7,8 +7,16 @@
|
|
|
7
7
|
* files: { <src>: { id, bytes, width, height } } } (0600)
|
|
8
8
|
* <dataDir>/web-office-skins/<pack-id>/<id>.png each picture, metadata stripped; id = sha of the kept bytes
|
|
9
9
|
*
|
|
10
|
+
* <dataDir>/web-office-skins/<pack-id>/pack.prev.json the version it replaced (#2692: one, for a restore), its pictures
|
|
11
|
+
* beside the current ones'
|
|
12
|
+
* <dataDir>/web-office-skins/.kept-<pack-id>/ a pack deleted keeping its previous version: pack.prev.json and its
|
|
13
|
+
* pictures, out of the pack's own directory (#2694 follow-up) — a
|
|
14
|
+
* host before #2692 skips the name (never an id) and never removes it,
|
|
15
|
+
* so there the id is free to upload again and nothing is left stuck
|
|
16
|
+
*
|
|
10
17
|
* Directories 0700, files 0600. An upload is written into a hidden directory first and renamed into place whole, so a
|
|
11
|
-
* pack is there entirely or not at all; a delete renames it away before removing it.
|
|
18
|
+
* pack is there entirely or not at all; a delete renames it away before removing it. A replace (#2692) writes the new
|
|
19
|
+
* pictures beside the old and swaps pack.json in one rename (put). The manifest is checked by the
|
|
12
20
|
* page's own module (checkSkinPack) — the page and the host agree on every rule — and then the pictures: each is a PNG
|
|
13
21
|
* (its signature, IHDR first, walked to IEND), within the per-file and per-pack caps and the side and pixel caps; every
|
|
14
22
|
* STRIP's picture is exactly frames·w × h; the background and the foreground are 16:9; every file the manifest names is sent and nothing
|
|
@@ -27,6 +35,17 @@ export const SKIN_LIMITS = {
|
|
|
27
35
|
};
|
|
28
36
|
/** The most an upload's body may be: every picture's base64 (4/3) plus the manifest and the envelope. */
|
|
29
37
|
export const SKIN_WIRE_BYTES = Math.ceil((SKIN_LIMITS.packBytes * 4) / 3) + SKIN_LIMITS.manifestBytes + 64 * 1024;
|
|
38
|
+
/**
|
|
39
|
+
* #2692: what the packs may take on disk in all — every pack's pictures and its one kept previous version's (a picture
|
|
40
|
+
* both share counted once): room for 16 full packs and a full previous version of each. Previous versions do not count
|
|
41
|
+
* towards SKIN_LIMITS.packs.
|
|
42
|
+
*/
|
|
43
|
+
export const SKIN_DISK_BYTES = 2 * SKIN_LIMITS.packs * SKIN_LIMITS.packBytes;
|
|
44
|
+
/** #2692: a pack's previous version, beside its pack.json (a host before #2692 reads neither the file nor a directory without pack.json). */
|
|
45
|
+
export const PREVIOUS_FILE = "pack.prev.json";
|
|
46
|
+
/** A deleted pack's kept previous version: its own directory, never the pack's (a host before #2692 would find the id taken, yet no pack to delete). */
|
|
47
|
+
export const keptDir = (id) => `.kept-${id}`;
|
|
48
|
+
const KEPT = /^\.kept-([A-Za-z0-9_-]{1,40})$/;
|
|
30
49
|
const ID = /^[A-Za-z0-9_-]{1,40}$/;
|
|
31
50
|
const FILE_ID = /^[0-9a-f]{32}$/;
|
|
32
51
|
/** A file name in a pack: segments of letters, digits, . _ -, never starting with a dot (no "..", no hidden file), .png. */
|
|
@@ -169,12 +188,26 @@ function recordOk(raw, dirName) {
|
|
|
169
188
|
return { record: { version: 1, id: dirName, name, sha: raw.sha, bytes: Number(raw.bytes) || 0, uploaded_at: Number(raw.uploaded_at) || 0,
|
|
170
189
|
by: typeof raw.by === "string" ? raw.by : "", manifest: raw.manifest, files }, pack: checked.pack };
|
|
171
190
|
}
|
|
191
|
+
const summaryOf = (r) => ({ id: r.id, name: r.name, sha: r.sha, bytes: r.bytes, files: Object.keys(r.files).length, uploaded_at: r.uploaded_at });
|
|
192
|
+
/** The pictures a record keeps, by their file id (one id may serve several names). */
|
|
193
|
+
const pictureIds = (r) => new Set(r ? Object.values(r.files).map(f => f.id) : []);
|
|
194
|
+
/** The bytes a pack's directory holds: its pictures, each once, the current and the previous version's together. */
|
|
195
|
+
const dirBytes = (...records) => {
|
|
196
|
+
const seen = new Map();
|
|
197
|
+
for (const r of records)
|
|
198
|
+
if (r)
|
|
199
|
+
for (const f of Object.values(r.files))
|
|
200
|
+
seen.set(f.id, f.bytes);
|
|
201
|
+
return [...seen.values()].reduce((a, b) => a + b, 0);
|
|
202
|
+
};
|
|
172
203
|
export class OfficeSkinStore {
|
|
173
204
|
now;
|
|
205
|
+
hooks;
|
|
174
206
|
state = null;
|
|
175
207
|
dir;
|
|
176
|
-
constructor(dataDir, now = () => Date.now()) {
|
|
208
|
+
constructor(dataDir, now = () => Date.now(), hooks = {}) {
|
|
177
209
|
this.now = now;
|
|
210
|
+
this.hooks = hooks;
|
|
178
211
|
this.dir = join(dataDir, "web-office-skins");
|
|
179
212
|
}
|
|
180
213
|
load() {
|
|
@@ -185,9 +218,19 @@ export class OfficeSkinStore {
|
|
|
185
218
|
names = readdirSync(this.dir);
|
|
186
219
|
}
|
|
187
220
|
catch (err) {
|
|
188
|
-
return (this.state = err.code === "ENOENT" ? { packs: new Map() } : "unreadable");
|
|
221
|
+
return (this.state = err.code === "ENOENT" ? { packs: new Map(), previous: new Map(), away: new Set() } : "unreadable");
|
|
189
222
|
}
|
|
190
|
-
const packs = new Map();
|
|
223
|
+
const packs = new Map(), previous = new Map(), away = new Set(), kept = [], stray = [];
|
|
224
|
+
const read = (dir, file, id = dir) => {
|
|
225
|
+
try {
|
|
226
|
+
const text = readFileSync(join(this.dir, dir, file), "utf8");
|
|
227
|
+
const ok = recordOk(JSON.parse(text), id);
|
|
228
|
+
return ok ? { ...ok, text } : null;
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
191
234
|
for (const n of names.sort()) {
|
|
192
235
|
// An upload or a delete a restart cut short: never offered, removed.
|
|
193
236
|
if (/^\.(?:up|rm)-[0-9a-f]{16}$/.test(n)) {
|
|
@@ -197,16 +240,65 @@ export class OfficeSkinStore {
|
|
|
197
240
|
catch { /* next time */ }
|
|
198
241
|
continue;
|
|
199
242
|
}
|
|
200
|
-
|
|
243
|
+
const k = KEPT.exec(n);
|
|
244
|
+
if (k) {
|
|
245
|
+
kept.push(k[1]);
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
if (!ID.test(n))
|
|
249
|
+
continue;
|
|
250
|
+
const prev = read(n, PREVIOUS_FILE);
|
|
251
|
+
// A deleted pack's previous left in the pack's own directory (as #2692 first kept it): moved out below.
|
|
252
|
+
if (prev && !existsSync(join(this.dir, n, "pack.json"))) {
|
|
253
|
+
stray.push(n);
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
if (prev)
|
|
257
|
+
previous.set(n, prev);
|
|
258
|
+
if (packs.size >= SKIN_LIMITS.packs)
|
|
259
|
+
continue;
|
|
260
|
+
const ok = read(n, "pack.json");
|
|
261
|
+
if (ok)
|
|
262
|
+
packs.set(n, ok);
|
|
263
|
+
// #2695: pictures a replace cut short by a crash wrote (before its swap) — named by neither version, never read,
|
|
264
|
+
// never counted towards the disk budget. Only when every record there was read back: a pack a tightened rule
|
|
265
|
+
// refuses keeps its files.
|
|
266
|
+
if (ok && (prev || !existsSync(join(this.dir, n, PREVIOUS_FILE))))
|
|
267
|
+
this.sweep(join(this.dir, n), ok.record, prev?.record);
|
|
268
|
+
}
|
|
269
|
+
for (const n of stray) {
|
|
270
|
+
if (kept.includes(n))
|
|
271
|
+
continue;
|
|
272
|
+
try {
|
|
273
|
+
renameSync(join(this.dir, n), join(this.dir, keptDir(n)));
|
|
274
|
+
kept.push(n);
|
|
275
|
+
}
|
|
276
|
+
catch { /* left as it is: not offered */ }
|
|
277
|
+
}
|
|
278
|
+
for (const id of kept) {
|
|
279
|
+
// The id uploaded again meanwhile (a host before #2692 sees it free): that pack is the one; the old previous goes.
|
|
280
|
+
if (packs.has(id) || existsSync(join(this.dir, id))) {
|
|
281
|
+
if (packs.has(id))
|
|
282
|
+
try {
|
|
283
|
+
rmSync(join(this.dir, keptDir(id)), { recursive: true, force: true });
|
|
284
|
+
}
|
|
285
|
+
catch { /* next time */ }
|
|
201
286
|
continue;
|
|
287
|
+
}
|
|
288
|
+
// A pack.json there is a deleted version's that a crash left (remove's, or restore's before its rename): never
|
|
289
|
+
// read, and gone before anything renames the directory back as the pack's (#2696 review).
|
|
202
290
|
try {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
291
|
+
rmSync(join(this.dir, keptDir(id), "pack.json"), { force: true });
|
|
292
|
+
}
|
|
293
|
+
catch { /* next time; put() removes it too */ }
|
|
294
|
+
const prev = read(keptDir(id), PREVIOUS_FILE, id);
|
|
295
|
+
if (prev) {
|
|
296
|
+
previous.set(id, prev);
|
|
297
|
+
away.add(id);
|
|
298
|
+
this.sweep(join(this.dir, keptDir(id)), prev.record);
|
|
206
299
|
}
|
|
207
|
-
catch { /* not a pack */ }
|
|
208
300
|
}
|
|
209
|
-
return (this.state = { packs });
|
|
301
|
+
return (this.state = { packs, previous, away });
|
|
210
302
|
}
|
|
211
303
|
readable() { return this.load() !== "unreadable"; }
|
|
212
304
|
/** A rev that moves with any change (the packs' ids and shas), the same after a restart. */
|
|
@@ -214,9 +306,18 @@ export class OfficeSkinStore {
|
|
|
214
306
|
/** GET /ui/office-skins: what every viewer's style picker lists. */
|
|
215
307
|
list() {
|
|
216
308
|
const s = this.load();
|
|
217
|
-
const packs = s === "unreadable" ? [] : [...s.packs.values()].map(({ record: r }) => (
|
|
309
|
+
const packs = s === "unreadable" ? [] : [...s.packs.values()].map(({ record: r }) => summaryOf(r));
|
|
218
310
|
return { rev: this.rev(), packs, readable: s !== "unreadable", limits: SKIN_LIMITS };
|
|
219
311
|
}
|
|
312
|
+
/** #2692: each kept pack's record and its previous version's (also a deleted pack's kept previous), for the tools. */
|
|
313
|
+
records() {
|
|
314
|
+
const s = this.load();
|
|
315
|
+
if (s === "unreadable")
|
|
316
|
+
return { packs: [], previous: new Map(), readable: false, diskBytes: 0 };
|
|
317
|
+
const ids = new Set([...s.packs.keys(), ...s.previous.keys()]);
|
|
318
|
+
return { packs: [...s.packs.values()].map(p => p.record), previous: new Map([...s.previous].map(([k, v]) => [k, v.record])), readable: true,
|
|
319
|
+
diskBytes: [...ids].reduce((n, id) => n + dirBytes(s.packs.get(id)?.record, s.previous.get(id)?.record), 0) };
|
|
320
|
+
}
|
|
220
321
|
/** GET /ui/office-skins/<id>: the manifest as uploaded and each file's picture id; null when there is no such pack. */
|
|
221
322
|
get(id) {
|
|
222
323
|
const s = this.load();
|
|
@@ -228,6 +329,8 @@ export class OfficeSkinStore {
|
|
|
228
329
|
}
|
|
229
330
|
/** The checked pack (an office's overrides are checked against it), or null. */
|
|
230
331
|
pack(id) { const s = this.load(); return s === "unreadable" ? null : s.packs.get(id)?.pack ?? null; }
|
|
332
|
+
/** #2692: a pack's kept previous version, checked, or null. */
|
|
333
|
+
previousPack(id) { const s = this.load(); return s === "unreadable" ? null : s.previous.get(id)?.pack ?? null; }
|
|
231
334
|
/** One picture of a pack, by its id (the sha of its bytes); null when the pack does not have it. */
|
|
232
335
|
picture(id, file) {
|
|
233
336
|
const s = this.load();
|
|
@@ -241,59 +344,247 @@ export class OfficeSkinStore {
|
|
|
241
344
|
return null;
|
|
242
345
|
}
|
|
243
346
|
}
|
|
244
|
-
/** Keep an upload (POST /ui/office-skins). A pack is
|
|
347
|
+
/** Keep an upload (POST /ui/office-skins). A pack the fleet keeps is never replaced here: its id taken is a 409 (delete it first). */
|
|
245
348
|
add(body, by) {
|
|
246
|
-
|
|
247
|
-
if (s === "unreadable")
|
|
349
|
+
if (this.load() === "unreadable")
|
|
248
350
|
return refuse(503, "skins_unreadable");
|
|
249
351
|
const checked = checkSkinUpload(body, by, this.now());
|
|
250
352
|
if (!checked.ok)
|
|
251
353
|
return checked;
|
|
252
|
-
const r = checked
|
|
354
|
+
const r = this.put(checked, { replace: false });
|
|
355
|
+
return r.ok ? { ok: true, rev: r.rev, pack: r.pack } : r;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Keep a checked upload (#2692: office_pack_upload). `replace`: an id the fleet keeps is replaced in place, its version
|
|
359
|
+
* now kept as the previous one (the one before that is dropped); else that is a 409, as the web upload's. The new
|
|
360
|
+
* pictures go into the pack's directory beside the old (each named by the sha of its bytes), the version being
|
|
361
|
+
* replaced is written as pack.prev.json, and then pack.json is renamed over in one step — the swap. Until it, the old
|
|
362
|
+
* version is what every reader gets; when anything fails before it, the old one stays and pack.prev.json is put back.
|
|
363
|
+
* A new pack is written into a hidden directory and renamed into place whole, as before.
|
|
364
|
+
*/
|
|
365
|
+
put(checked, opts) {
|
|
366
|
+
const s = this.load();
|
|
367
|
+
if (s === "unreadable")
|
|
368
|
+
return refuse(503, "skins_unreadable");
|
|
369
|
+
const r = checked.record, current = s.packs.get(r.id), previous = s.previous.get(r.id);
|
|
253
370
|
// Case-insensitively too: on a case-insensitive disk "Cozy" and "cozy" are one directory.
|
|
254
|
-
|
|
371
|
+
const clash = [...s.packs.keys(), ...s.previous.keys()].find(k => k.toLowerCase() === r.id.toLowerCase() && k !== r.id);
|
|
372
|
+
if (clash)
|
|
373
|
+
return refuse(409, "skin_exists", `"${clash}" is kept already (ids differ only in case)`);
|
|
374
|
+
if (current && !opts.replace)
|
|
255
375
|
return refuse(409, "skin_exists", `"${r.id}" is kept already: delete it first`);
|
|
256
|
-
if (s.packs.size >= SKIN_LIMITS.packs)
|
|
376
|
+
if (!current && s.packs.size >= SKIN_LIMITS.packs)
|
|
257
377
|
return refuse(409, "skins_quota", `at most ${SKIN_LIMITS.packs} packs`);
|
|
258
|
-
const
|
|
378
|
+
const text = JSON.stringify(r, null, 1) + "\n";
|
|
379
|
+
const disk = this.records().diskBytes - dirBytes(current?.record, previous?.record) + dirBytes(r, current?.record ?? previous?.record);
|
|
380
|
+
if (disk > SKIN_DISK_BYTES)
|
|
381
|
+
return refuse(409, "skins_disk_budget", `at most ${SKIN_DISK_BYTES / MiB} MiB on disk, previous versions included: delete a pack (its previous version goes with it)`);
|
|
382
|
+
const home = join(this.dir, r.id);
|
|
383
|
+
if (!current && !previous) {
|
|
384
|
+
if (existsSync(home))
|
|
385
|
+
return refuse(409, "skin_exists", `"${r.id}" is kept already: delete it first`);
|
|
386
|
+
const tmp = join(this.dir, `.up-${randomBytes(8).toString("hex")}`);
|
|
387
|
+
try {
|
|
388
|
+
mkdirSync(this.dir, { recursive: true, mode: 0o700 });
|
|
389
|
+
mkdirSync(tmp, { mode: 0o700 });
|
|
390
|
+
for (const [id, bytes] of checked.pictures)
|
|
391
|
+
writeFileSync(join(tmp, `${id}.png`), bytes, { mode: 0o600, flag: "wx" });
|
|
392
|
+
atomicWriteFileSync(join(tmp, "pack.json"), text, { mode: 0o600 });
|
|
393
|
+
this.hooks.beforeSwap?.(r.id);
|
|
394
|
+
renameSync(tmp, home);
|
|
395
|
+
}
|
|
396
|
+
catch (err) {
|
|
397
|
+
try {
|
|
398
|
+
rmSync(tmp, { recursive: true, force: true });
|
|
399
|
+
}
|
|
400
|
+
catch { /* best effort */ }
|
|
401
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
402
|
+
}
|
|
403
|
+
s.packs.set(r.id, { record: r, pack: checked.pack, text });
|
|
404
|
+
return { ok: true, rev: this.rev(), pack: summaryOf(r), replaced: null };
|
|
405
|
+
}
|
|
406
|
+
// In place: a kept pack replaced, or a deleted one whose previous version was kept (that previous stays: its
|
|
407
|
+
// directory comes back as the pack's first).
|
|
408
|
+
const keep = current ?? previous, written = [], back = !current && s.away.has(r.id);
|
|
409
|
+
if (back) {
|
|
410
|
+
if (existsSync(home))
|
|
411
|
+
return refuse(409, "skin_exists", `"${r.id}" is kept already: delete it first`);
|
|
412
|
+
try {
|
|
413
|
+
rmSync(join(this.dir, keptDir(r.id), "pack.json"), { force: true });
|
|
414
|
+
renameSync(join(this.dir, keptDir(r.id)), home);
|
|
415
|
+
}
|
|
416
|
+
catch (err) {
|
|
417
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
418
|
+
}
|
|
419
|
+
s.away.delete(r.id);
|
|
420
|
+
}
|
|
259
421
|
try {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
422
|
+
for (const [id, bytes] of checked.pictures) {
|
|
423
|
+
const at = join(home, `${id}.png`);
|
|
424
|
+
if (existsSync(at))
|
|
425
|
+
continue; // the same bytes (named by their sha)
|
|
426
|
+
writeFileSync(at, bytes, { mode: 0o600, flag: "wx" });
|
|
427
|
+
written.push(at);
|
|
428
|
+
}
|
|
429
|
+
if (current)
|
|
430
|
+
atomicWriteFileSync(join(home, PREVIOUS_FILE), current.text, { mode: 0o600 });
|
|
431
|
+
this.hooks.beforeSwap?.(r.id);
|
|
432
|
+
atomicWriteFileSync(join(home, "pack.json"), text, { mode: 0o600 }); // the swap
|
|
266
433
|
}
|
|
267
434
|
catch (err) {
|
|
268
435
|
try {
|
|
269
|
-
|
|
436
|
+
if (current) {
|
|
437
|
+
if (previous)
|
|
438
|
+
atomicWriteFileSync(join(home, PREVIOUS_FILE), previous.text, { mode: 0o600 });
|
|
439
|
+
else
|
|
440
|
+
rmSync(join(home, PREVIOUS_FILE), { force: true });
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
catch { /* read back as it is */ }
|
|
444
|
+
for (const at of written) {
|
|
445
|
+
try {
|
|
446
|
+
rmSync(at, { force: true });
|
|
447
|
+
}
|
|
448
|
+
catch { /* removed with the pack */ }
|
|
449
|
+
}
|
|
450
|
+
if (back) {
|
|
451
|
+
try {
|
|
452
|
+
renameSync(home, join(this.dir, keptDir(r.id)));
|
|
453
|
+
s.away.add(r.id);
|
|
454
|
+
}
|
|
455
|
+
catch { /* moved out on the next load */ }
|
|
270
456
|
}
|
|
271
|
-
catch { /* best effort */ }
|
|
272
457
|
return refuse(503, "skin_write_failed", err.message);
|
|
273
458
|
}
|
|
274
|
-
s.packs.set(r.id, { record: r, pack: checked.pack });
|
|
275
|
-
|
|
459
|
+
s.packs.set(r.id, { record: r, pack: checked.pack, text });
|
|
460
|
+
if (current)
|
|
461
|
+
s.previous.set(r.id, current);
|
|
462
|
+
this.sweep(home, r, current ? current.record : keep.record);
|
|
463
|
+
return { ok: true, rev: this.rev(), pack: summaryOf(r), replaced: current ? summaryOf(current.record) : null };
|
|
464
|
+
}
|
|
465
|
+
/** Remove the pictures of a pack's directory (`dir`) that neither its current nor its previous version names. */
|
|
466
|
+
sweep(dir, ...keep) {
|
|
467
|
+
const ids = new Set(keep.flatMap(r => [...pictureIds(r)]));
|
|
468
|
+
let names = [];
|
|
469
|
+
try {
|
|
470
|
+
names = readdirSync(dir);
|
|
471
|
+
}
|
|
472
|
+
catch {
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
475
|
+
for (const n of names)
|
|
476
|
+
if (/^[0-9a-f]{32}\.png$/.test(n) && !ids.has(n.slice(0, 32))) {
|
|
477
|
+
try {
|
|
478
|
+
rmSync(join(dir, n), { force: true });
|
|
479
|
+
}
|
|
480
|
+
catch { /* next time */ }
|
|
481
|
+
}
|
|
276
482
|
}
|
|
277
|
-
/**
|
|
278
|
-
|
|
483
|
+
/**
|
|
484
|
+
* #2692: bring back a pack's previous version. The version it replaces becomes the previous one (a restore is undone
|
|
485
|
+
* the same way); a deleted pack whose previous was kept comes back with none. pack.json is renamed over in one step.
|
|
486
|
+
*/
|
|
487
|
+
restore(id) {
|
|
279
488
|
const s = this.load();
|
|
280
489
|
if (s === "unreadable")
|
|
281
490
|
return refuse(503, "skins_unreadable");
|
|
282
|
-
|
|
491
|
+
const previous = ID.test(id) ? s.previous.get(id) : undefined, current = s.packs.get(id);
|
|
492
|
+
if (!previous)
|
|
493
|
+
return refuse(404, "skin_no_previous", `"${id}" has no previous version kept`);
|
|
494
|
+
if (!current && s.packs.size >= SKIN_LIMITS.packs)
|
|
495
|
+
return refuse(409, "skins_quota", `at most ${SKIN_LIMITS.packs} packs`);
|
|
496
|
+
const home = join(this.dir, id);
|
|
497
|
+
if (!current && s.away.has(id)) {
|
|
498
|
+
// A deleted pack's kept previous: its pack.json written in its own directory, which then becomes the pack's in one rename.
|
|
499
|
+
const away = join(this.dir, keptDir(id));
|
|
500
|
+
if (existsSync(home))
|
|
501
|
+
return refuse(409, "skin_exists", `"${id}" is kept already: delete it first`);
|
|
502
|
+
try {
|
|
503
|
+
this.hooks.beforeSwap?.(id);
|
|
504
|
+
atomicWriteFileSync(join(away, "pack.json"), previous.text, { mode: 0o600 });
|
|
505
|
+
renameSync(away, home); // the swap
|
|
506
|
+
}
|
|
507
|
+
catch (err) {
|
|
508
|
+
try {
|
|
509
|
+
rmSync(join(away, "pack.json"), { force: true });
|
|
510
|
+
}
|
|
511
|
+
catch { /* not read in a kept directory */ }
|
|
512
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
513
|
+
}
|
|
514
|
+
s.away.delete(id);
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
try {
|
|
518
|
+
this.hooks.beforeSwap?.(id);
|
|
519
|
+
atomicWriteFileSync(join(home, "pack.json"), previous.text, { mode: 0o600 }); // the swap
|
|
520
|
+
}
|
|
521
|
+
catch (err) {
|
|
522
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
try {
|
|
526
|
+
if (current)
|
|
527
|
+
atomicWriteFileSync(join(home, PREVIOUS_FILE), current.text, { mode: 0o600 });
|
|
528
|
+
else
|
|
529
|
+
rmSync(join(home, PREVIOUS_FILE), { force: true });
|
|
530
|
+
}
|
|
531
|
+
catch { /* the previous file still names the restored version: restoring again changes nothing */ }
|
|
532
|
+
s.packs.set(id, previous);
|
|
533
|
+
if (current)
|
|
534
|
+
s.previous.set(id, current);
|
|
535
|
+
else
|
|
536
|
+
s.previous.delete(id);
|
|
537
|
+
return { ok: true, rev: this.rev(), pack: summaryOf(previous.record), replaced: current ? summaryOf(current.record) : null };
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Remove a pack (DELETE /ui/office-skins/<id>). Offices naming it are drawn in a built-in style until it is back. Its
|
|
541
|
+
* previous version goes with it — unless `keepPrevious` (#2692), which removes only the current one, so a restore can
|
|
542
|
+
* bring the previous back: the pack's directory is renamed to keptDir(id) at once (gone for every reader, an older
|
|
543
|
+
* host's too, the id free there), then its pack.json and the current version's own pictures are removed. A deleted
|
|
544
|
+
* pack's kept previous is removed by deleting it again.
|
|
545
|
+
*/
|
|
546
|
+
remove(id, opts = {}) {
|
|
547
|
+
const s = this.load();
|
|
548
|
+
if (s === "unreadable")
|
|
549
|
+
return refuse(503, "skins_unreadable");
|
|
550
|
+
const current = ID.test(id) ? s.packs.get(id) : undefined, previous = ID.test(id) ? s.previous.get(id) : undefined;
|
|
551
|
+
if (!current && !previous)
|
|
283
552
|
return refuse(404, "skin_unknown");
|
|
553
|
+
if (opts.keepPrevious && previous && current) {
|
|
554
|
+
const away = join(this.dir, keptDir(id));
|
|
555
|
+
try {
|
|
556
|
+
rmSync(away, { recursive: true, force: true });
|
|
557
|
+
renameSync(join(this.dir, id), away);
|
|
558
|
+
}
|
|
559
|
+
catch (err) {
|
|
560
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
561
|
+
}
|
|
562
|
+
try {
|
|
563
|
+
rmSync(join(away, "pack.json"), { force: true });
|
|
564
|
+
}
|
|
565
|
+
catch { /* never read in a kept directory */ }
|
|
566
|
+
s.packs.delete(id);
|
|
567
|
+
s.away.add(id);
|
|
568
|
+
this.sweep(away, previous.record);
|
|
569
|
+
return { ok: true, rev: this.rev(), removed: summaryOf(current.record), previous_kept: true };
|
|
570
|
+
}
|
|
571
|
+
if (opts.keepPrevious && !current)
|
|
572
|
+
return refuse(404, "skin_unknown", `"${id}" is deleted already; its previous version is kept`);
|
|
284
573
|
const gone = join(this.dir, `.rm-${randomBytes(8).toString("hex")}`);
|
|
285
574
|
try {
|
|
286
|
-
renameSync(join(this.dir, id), gone);
|
|
575
|
+
renameSync(join(this.dir, current ? id : keptDir(id)), gone);
|
|
287
576
|
}
|
|
288
577
|
catch (err) {
|
|
289
578
|
return refuse(503, "skin_write_failed", err.message);
|
|
290
579
|
}
|
|
291
580
|
s.packs.delete(id);
|
|
581
|
+
s.previous.delete(id);
|
|
582
|
+
s.away.delete(id);
|
|
292
583
|
try {
|
|
293
584
|
rmSync(gone, { recursive: true, force: true });
|
|
294
585
|
}
|
|
295
586
|
catch { /* removed on the next load */ }
|
|
296
|
-
return { ok: true, rev: this.rev() };
|
|
587
|
+
return { ok: true, rev: this.rev(), removed: current ? summaryOf(current.record) : null, previous_kept: false };
|
|
297
588
|
}
|
|
298
589
|
}
|
|
299
590
|
//# sourceMappingURL=web-office-skins.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-office-skins.js","sourceRoot":"","sources":["../src/web-office-skins.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-office-skins.js","sourceRoot":"","sources":["../src/web-office-skins.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,12 @@ export interface OfficeLayout {
|
|
|
26
26
|
waypoints: OfficePoint[];
|
|
27
27
|
edges: Array<[string, string]>;
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* #2752: the one member of an office kept for nobody (its style's NPCs only): a team with no name, which no team has, so
|
|
31
|
+
* an older version finds nobody in it too. As fleet-office-model.js NOBODY.
|
|
32
|
+
*/
|
|
33
|
+
export declare const OFFICE_NOBODY = "team:";
|
|
34
|
+
/** `members`: instance names, or `team:<name>` for a team's members; none means everyone, [OFFICE_NOBODY] nobody. */
|
|
30
35
|
export interface Office {
|
|
31
36
|
id: string;
|
|
32
37
|
name: string;
|
|
@@ -58,6 +63,21 @@ export type OfficeWrite = {
|
|
|
58
63
|
};
|
|
59
64
|
/** A whole list of offices, as a person sends it: every rule, or a refusal naming where it broke. */
|
|
60
65
|
export declare function checkOffices(raw: unknown, packOf?: OverridePack): OfficeCheck;
|
|
66
|
+
/** The overrides parts kept beside the offices on disk, apart from the rest (#2665 night places, #2691 seat reservations, #2736 the mail drop). */
|
|
67
|
+
declare const BESIDE: readonly ["furnitureNight", "seatFor", "mailDrop"];
|
|
68
|
+
type Beside = (typeof BESIDE)[number];
|
|
69
|
+
type OnDisk = {
|
|
70
|
+
offices: Office[];
|
|
71
|
+
overrides?: Record<string, LayoutOverrides>;
|
|
72
|
+
} & {
|
|
73
|
+
[K in Beside]?: Record<string, NonNullable<LayoutOverrides[K]>>;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* #2665/#2706: what goes on disk — the offices without their overrides; beside them, by office id, each office's
|
|
77
|
+
* overrides without those parts, and each part on its own (none: no key). The maps have no prototype (#2708 review), so
|
|
78
|
+
* an id is always an own key; exported for tests.
|
|
79
|
+
*/
|
|
80
|
+
export declare function officesOnDisk(offices: Office[]): OnDisk;
|
|
61
81
|
export declare class OfficeStore {
|
|
62
82
|
private readonly packOf?;
|
|
63
83
|
private state;
|
|
@@ -67,17 +87,39 @@ export declare class OfficeStore {
|
|
|
67
87
|
private load;
|
|
68
88
|
readable(): boolean;
|
|
69
89
|
rev(): number;
|
|
70
|
-
/** What the page reads (GET /ui/offices): a copy; none when the file is unreadable. */
|
|
90
|
+
/** What the page reads (GET /ui/offices): a copy; none when the file is unreadable. #2716: `autoSkin` when one is kept. */
|
|
71
91
|
list(): {
|
|
72
92
|
rev: number;
|
|
73
93
|
offices: Office[];
|
|
74
94
|
readable: boolean;
|
|
95
|
+
autoSkin?: string;
|
|
96
|
+
};
|
|
97
|
+
/** #2716: the whole-fleet office's style kept for everyone, or null (the page's default). */
|
|
98
|
+
autoSkin(): string | null;
|
|
99
|
+
/**
|
|
100
|
+
* #2716: set the whole-fleet office's style (PUT /ui/office-style): a skin id, or null for the default. One value, so
|
|
101
|
+
* the last person's pick wins (no rev); the offices are written unchanged with it, and the rev moves (every page reads
|
|
102
|
+
* again). On disk first, then in memory.
|
|
103
|
+
*/
|
|
104
|
+
setAutoSkin(skin: unknown): {
|
|
105
|
+
ok: true;
|
|
106
|
+
rev: number;
|
|
107
|
+
autoSkin: string | null;
|
|
108
|
+
} | {
|
|
109
|
+
ok: false;
|
|
110
|
+
status: 400 | 503;
|
|
111
|
+
error: string;
|
|
112
|
+
detail?: string;
|
|
75
113
|
};
|
|
114
|
+
private write;
|
|
76
115
|
/**
|
|
77
116
|
* Replace every stored office (PUT /ui/offices). `expectedRev`: the rev the page last read — another change since is a
|
|
78
|
-
* 409, so two editors never overwrite each other unseen. On disk first, then in memory.
|
|
117
|
+
* 409, so two editors never overwrite each other unseen. On disk first, then in memory. `packOf` (#2692): the packs to
|
|
118
|
+
* check the overrides against in place of the kept ones (a pack about to replace one; or none, to put back as it was).
|
|
79
119
|
*/
|
|
80
|
-
replace(raw: unknown, expectedRev?: number
|
|
120
|
+
replace(raw: unknown, expectedRev?: number, opts?: {
|
|
121
|
+
packOf?: OverridePack;
|
|
122
|
+
}): OfficeWrite;
|
|
81
123
|
}
|
|
82
124
|
/**
|
|
83
125
|
* Office review (#2399 carry): how often one person may save the offices (PUT /ui/offices). An editor saves on an explicit
|
|
@@ -108,3 +150,4 @@ export declare class OfficeWriteLimiter {
|
|
|
108
150
|
/** Count an accepted save. */
|
|
109
151
|
record(person: string): void;
|
|
110
152
|
}
|
|
153
|
+
export {};
|