@songsid/agend 2.3.2-beta.10 → 2.3.2-beta.12
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 +4 -0
- package/README.zh-TW.md +4 -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/backend/kiro-classic-archive.d.ts +52 -0
- package/dist/backend/kiro-classic-archive.js +444 -0
- package/dist/backend/kiro-classic-archive.js.map +1 -0
- package/dist/backend/kiro-identity.d.ts +19 -0
- package/dist/backend/kiro-identity.js +43 -0
- 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-v2-store-worker.js +21 -1
- package/dist/backend/kiro-v2-store-worker.js.map +1 -1
- package/dist/backend/kiro-v2-store.d.ts +8 -0
- package/dist/backend/kiro-v2-store.js.map +1 -1
- package/dist/backend/kiro.d.ts +99 -1
- package/dist/backend/kiro.js +352 -18
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +49 -0
- package/dist/backend/types.js +9 -0
- package/dist/backend/types.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 +12 -0
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/cli.js +33 -0
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +2 -0
- 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 +45 -0
- package/dist/daemon.js +342 -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/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 +61 -2
- package/dist/fleet-manager.js +421 -28
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/docker-install/SKILL.md +25 -0
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +10 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +28 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +28 -0
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +20 -2
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +20 -2
- package/dist/instance-config-impact.js +2 -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 +11 -0
- package/dist/kiro-migrate.js +86 -31
- package/dist/kiro-migrate.js.map +1 -1
- 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 +5 -0
- package/dist/kiro-tui-forensic.js +3 -3
- package/dist/kiro-tui-forensic.js.map +1 -1
- package/dist/locale.js +142 -0
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +1 -1
- 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-share.d.ts +12 -2
- package/dist/office-share.js +27 -2
- package/dist/office-share.js.map +1 -1
- package/dist/outbound-schemas.d.ts +39 -0
- package/dist/outbound-schemas.js +29 -0
- package/dist/outbound-schemas.js.map +1 -1
- 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/settings-change.js +8 -5
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-instance-patch.js +1 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/tool-permissions.js +17 -0
- package/dist/tool-permissions.js.map +1 -1
- package/dist/transcript-sources.d.ts +1 -0
- package/dist/transcript-sources.js +2 -1
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/ui/chat-store.js +3 -2
- package/dist/ui/chat-strings.js +2 -2
- package/dist/ui/fleet-office-editor.js +54 -2
- package/dist/ui/fleet-office-layout.js +44 -7
- package/dist/ui/fleet-office-pack.d.ts +9 -3
- package/dist/ui/fleet-office-pack.js +117 -19
- package/dist/ui/fleet-office-store.js +43 -0
- package/dist/ui/fleet-office-zones.js +92 -17
- package/dist/ui/fleet-office.js +102 -16
- package/dist/ui/panel-chat.js +14 -2
- package/dist/ui/panel-log.js +2 -2
- package/dist/ui/panel-needs.js +1 -1
- package/dist/ui/panel-settings.js +5 -5
- package/dist/ui/settings-model.js +17 -9
- package/dist/ui/settings-strings.js +2 -0
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-stream.js +1 -1
- package/dist/ui/shared/app.css +18 -2
- package/dist/web-api.d.ts +5 -1
- package/dist/web-api.js +91 -3
- package/dist/web-api.js.map +1 -1
- package/dist/web-office-acts.js +2 -2
- 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 +232 -0
- package/dist/web-office-pack-tools.js +754 -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 +318 -33
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-office-store.d.ts +21 -2
- package/dist/web-office-store.js +78 -18
- package/dist/web-office-store.js.map +1 -1
- package/package.json +1 -1
- package/templates/windows-shortcuts.ps1 +16 -15
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,59 @@ 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
|
+
}
|
|
264
|
+
for (const n of stray) {
|
|
265
|
+
if (kept.includes(n))
|
|
266
|
+
continue;
|
|
267
|
+
try {
|
|
268
|
+
renameSync(join(this.dir, n), join(this.dir, keptDir(n)));
|
|
269
|
+
kept.push(n);
|
|
270
|
+
}
|
|
271
|
+
catch { /* left as it is: not offered */ }
|
|
272
|
+
}
|
|
273
|
+
for (const id of kept) {
|
|
274
|
+
// The id uploaded again meanwhile (a host before #2692 sees it free): that pack is the one; the old previous goes.
|
|
275
|
+
if (packs.has(id) || existsSync(join(this.dir, id))) {
|
|
276
|
+
if (packs.has(id))
|
|
277
|
+
try {
|
|
278
|
+
rmSync(join(this.dir, keptDir(id)), { recursive: true, force: true });
|
|
279
|
+
}
|
|
280
|
+
catch { /* next time */ }
|
|
201
281
|
continue;
|
|
282
|
+
}
|
|
283
|
+
// A pack.json there is a deleted version's that a crash left (remove's, or restore's before its rename): never
|
|
284
|
+
// read, and gone before anything renames the directory back as the pack's (#2696 review).
|
|
202
285
|
try {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
286
|
+
rmSync(join(this.dir, keptDir(id), "pack.json"), { force: true });
|
|
287
|
+
}
|
|
288
|
+
catch { /* next time; put() removes it too */ }
|
|
289
|
+
const prev = read(keptDir(id), PREVIOUS_FILE, id);
|
|
290
|
+
if (prev) {
|
|
291
|
+
previous.set(id, prev);
|
|
292
|
+
away.add(id);
|
|
206
293
|
}
|
|
207
|
-
catch { /* not a pack */ }
|
|
208
294
|
}
|
|
209
|
-
return (this.state = { packs });
|
|
295
|
+
return (this.state = { packs, previous, away });
|
|
210
296
|
}
|
|
211
297
|
readable() { return this.load() !== "unreadable"; }
|
|
212
298
|
/** A rev that moves with any change (the packs' ids and shas), the same after a restart. */
|
|
@@ -214,9 +300,18 @@ export class OfficeSkinStore {
|
|
|
214
300
|
/** GET /ui/office-skins: what every viewer's style picker lists. */
|
|
215
301
|
list() {
|
|
216
302
|
const s = this.load();
|
|
217
|
-
const packs = s === "unreadable" ? [] : [...s.packs.values()].map(({ record: r }) => (
|
|
303
|
+
const packs = s === "unreadable" ? [] : [...s.packs.values()].map(({ record: r }) => summaryOf(r));
|
|
218
304
|
return { rev: this.rev(), packs, readable: s !== "unreadable", limits: SKIN_LIMITS };
|
|
219
305
|
}
|
|
306
|
+
/** #2692: each kept pack's record and its previous version's (also a deleted pack's kept previous), for the tools. */
|
|
307
|
+
records() {
|
|
308
|
+
const s = this.load();
|
|
309
|
+
if (s === "unreadable")
|
|
310
|
+
return { packs: [], previous: new Map(), readable: false, diskBytes: 0 };
|
|
311
|
+
const ids = new Set([...s.packs.keys(), ...s.previous.keys()]);
|
|
312
|
+
return { packs: [...s.packs.values()].map(p => p.record), previous: new Map([...s.previous].map(([k, v]) => [k, v.record])), readable: true,
|
|
313
|
+
diskBytes: [...ids].reduce((n, id) => n + dirBytes(s.packs.get(id)?.record, s.previous.get(id)?.record), 0) };
|
|
314
|
+
}
|
|
220
315
|
/** GET /ui/office-skins/<id>: the manifest as uploaded and each file's picture id; null when there is no such pack. */
|
|
221
316
|
get(id) {
|
|
222
317
|
const s = this.load();
|
|
@@ -228,6 +323,8 @@ export class OfficeSkinStore {
|
|
|
228
323
|
}
|
|
229
324
|
/** The checked pack (an office's overrides are checked against it), or null. */
|
|
230
325
|
pack(id) { const s = this.load(); return s === "unreadable" ? null : s.packs.get(id)?.pack ?? null; }
|
|
326
|
+
/** #2692: a pack's kept previous version, checked, or null. */
|
|
327
|
+
previousPack(id) { const s = this.load(); return s === "unreadable" ? null : s.previous.get(id)?.pack ?? null; }
|
|
231
328
|
/** One picture of a pack, by its id (the sha of its bytes); null when the pack does not have it. */
|
|
232
329
|
picture(id, file) {
|
|
233
330
|
const s = this.load();
|
|
@@ -241,59 +338,247 @@ export class OfficeSkinStore {
|
|
|
241
338
|
return null;
|
|
242
339
|
}
|
|
243
340
|
}
|
|
244
|
-
/** Keep an upload (POST /ui/office-skins). A pack is
|
|
341
|
+
/** 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
342
|
add(body, by) {
|
|
246
|
-
|
|
247
|
-
if (s === "unreadable")
|
|
343
|
+
if (this.load() === "unreadable")
|
|
248
344
|
return refuse(503, "skins_unreadable");
|
|
249
345
|
const checked = checkSkinUpload(body, by, this.now());
|
|
250
346
|
if (!checked.ok)
|
|
251
347
|
return checked;
|
|
252
|
-
const r = checked
|
|
348
|
+
const r = this.put(checked, { replace: false });
|
|
349
|
+
return r.ok ? { ok: true, rev: r.rev, pack: r.pack } : r;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Keep a checked upload (#2692: office_pack_upload). `replace`: an id the fleet keeps is replaced in place, its version
|
|
353
|
+
* now kept as the previous one (the one before that is dropped); else that is a 409, as the web upload's. The new
|
|
354
|
+
* pictures go into the pack's directory beside the old (each named by the sha of its bytes), the version being
|
|
355
|
+
* replaced is written as pack.prev.json, and then pack.json is renamed over in one step — the swap. Until it, the old
|
|
356
|
+
* version is what every reader gets; when anything fails before it, the old one stays and pack.prev.json is put back.
|
|
357
|
+
* A new pack is written into a hidden directory and renamed into place whole, as before.
|
|
358
|
+
*/
|
|
359
|
+
put(checked, opts) {
|
|
360
|
+
const s = this.load();
|
|
361
|
+
if (s === "unreadable")
|
|
362
|
+
return refuse(503, "skins_unreadable");
|
|
363
|
+
const r = checked.record, current = s.packs.get(r.id), previous = s.previous.get(r.id);
|
|
253
364
|
// Case-insensitively too: on a case-insensitive disk "Cozy" and "cozy" are one directory.
|
|
254
|
-
|
|
365
|
+
const clash = [...s.packs.keys(), ...s.previous.keys()].find(k => k.toLowerCase() === r.id.toLowerCase() && k !== r.id);
|
|
366
|
+
if (clash)
|
|
367
|
+
return refuse(409, "skin_exists", `"${clash}" is kept already (ids differ only in case)`);
|
|
368
|
+
if (current && !opts.replace)
|
|
255
369
|
return refuse(409, "skin_exists", `"${r.id}" is kept already: delete it first`);
|
|
256
|
-
if (s.packs.size >= SKIN_LIMITS.packs)
|
|
370
|
+
if (!current && s.packs.size >= SKIN_LIMITS.packs)
|
|
257
371
|
return refuse(409, "skins_quota", `at most ${SKIN_LIMITS.packs} packs`);
|
|
258
|
-
const
|
|
372
|
+
const text = JSON.stringify(r, null, 1) + "\n";
|
|
373
|
+
const disk = this.records().diskBytes - dirBytes(current?.record, previous?.record) + dirBytes(r, current?.record ?? previous?.record);
|
|
374
|
+
if (disk > SKIN_DISK_BYTES)
|
|
375
|
+
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)`);
|
|
376
|
+
const home = join(this.dir, r.id);
|
|
377
|
+
if (!current && !previous) {
|
|
378
|
+
if (existsSync(home))
|
|
379
|
+
return refuse(409, "skin_exists", `"${r.id}" is kept already: delete it first`);
|
|
380
|
+
const tmp = join(this.dir, `.up-${randomBytes(8).toString("hex")}`);
|
|
381
|
+
try {
|
|
382
|
+
mkdirSync(this.dir, { recursive: true, mode: 0o700 });
|
|
383
|
+
mkdirSync(tmp, { mode: 0o700 });
|
|
384
|
+
for (const [id, bytes] of checked.pictures)
|
|
385
|
+
writeFileSync(join(tmp, `${id}.png`), bytes, { mode: 0o600, flag: "wx" });
|
|
386
|
+
atomicWriteFileSync(join(tmp, "pack.json"), text, { mode: 0o600 });
|
|
387
|
+
this.hooks.beforeSwap?.(r.id);
|
|
388
|
+
renameSync(tmp, home);
|
|
389
|
+
}
|
|
390
|
+
catch (err) {
|
|
391
|
+
try {
|
|
392
|
+
rmSync(tmp, { recursive: true, force: true });
|
|
393
|
+
}
|
|
394
|
+
catch { /* best effort */ }
|
|
395
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
396
|
+
}
|
|
397
|
+
s.packs.set(r.id, { record: r, pack: checked.pack, text });
|
|
398
|
+
return { ok: true, rev: this.rev(), pack: summaryOf(r), replaced: null };
|
|
399
|
+
}
|
|
400
|
+
// In place: a kept pack replaced, or a deleted one whose previous version was kept (that previous stays: its
|
|
401
|
+
// directory comes back as the pack's first).
|
|
402
|
+
const keep = current ?? previous, written = [], back = !current && s.away.has(r.id);
|
|
403
|
+
if (back) {
|
|
404
|
+
if (existsSync(home))
|
|
405
|
+
return refuse(409, "skin_exists", `"${r.id}" is kept already: delete it first`);
|
|
406
|
+
try {
|
|
407
|
+
rmSync(join(this.dir, keptDir(r.id), "pack.json"), { force: true });
|
|
408
|
+
renameSync(join(this.dir, keptDir(r.id)), home);
|
|
409
|
+
}
|
|
410
|
+
catch (err) {
|
|
411
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
412
|
+
}
|
|
413
|
+
s.away.delete(r.id);
|
|
414
|
+
}
|
|
259
415
|
try {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
416
|
+
for (const [id, bytes] of checked.pictures) {
|
|
417
|
+
const at = join(home, `${id}.png`);
|
|
418
|
+
if (existsSync(at))
|
|
419
|
+
continue; // the same bytes (named by their sha)
|
|
420
|
+
writeFileSync(at, bytes, { mode: 0o600, flag: "wx" });
|
|
421
|
+
written.push(at);
|
|
422
|
+
}
|
|
423
|
+
if (current)
|
|
424
|
+
atomicWriteFileSync(join(home, PREVIOUS_FILE), current.text, { mode: 0o600 });
|
|
425
|
+
this.hooks.beforeSwap?.(r.id);
|
|
426
|
+
atomicWriteFileSync(join(home, "pack.json"), text, { mode: 0o600 }); // the swap
|
|
266
427
|
}
|
|
267
428
|
catch (err) {
|
|
268
429
|
try {
|
|
269
|
-
|
|
430
|
+
if (current) {
|
|
431
|
+
if (previous)
|
|
432
|
+
atomicWriteFileSync(join(home, PREVIOUS_FILE), previous.text, { mode: 0o600 });
|
|
433
|
+
else
|
|
434
|
+
rmSync(join(home, PREVIOUS_FILE), { force: true });
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
catch { /* read back as it is */ }
|
|
438
|
+
for (const at of written) {
|
|
439
|
+
try {
|
|
440
|
+
rmSync(at, { force: true });
|
|
441
|
+
}
|
|
442
|
+
catch { /* removed with the pack */ }
|
|
443
|
+
}
|
|
444
|
+
if (back) {
|
|
445
|
+
try {
|
|
446
|
+
renameSync(home, join(this.dir, keptDir(r.id)));
|
|
447
|
+
s.away.add(r.id);
|
|
448
|
+
}
|
|
449
|
+
catch { /* moved out on the next load */ }
|
|
270
450
|
}
|
|
271
|
-
catch { /* best effort */ }
|
|
272
451
|
return refuse(503, "skin_write_failed", err.message);
|
|
273
452
|
}
|
|
274
|
-
s.packs.set(r.id, { record: r, pack: checked.pack });
|
|
275
|
-
|
|
453
|
+
s.packs.set(r.id, { record: r, pack: checked.pack, text });
|
|
454
|
+
if (current)
|
|
455
|
+
s.previous.set(r.id, current);
|
|
456
|
+
this.sweep(home, r, current ? current.record : keep.record);
|
|
457
|
+
return { ok: true, rev: this.rev(), pack: summaryOf(r), replaced: current ? summaryOf(current.record) : null };
|
|
458
|
+
}
|
|
459
|
+
/** Remove the pictures of a pack's directory (`dir`) that neither its current nor its previous version names. */
|
|
460
|
+
sweep(dir, ...keep) {
|
|
461
|
+
const ids = new Set(keep.flatMap(r => [...pictureIds(r)]));
|
|
462
|
+
let names = [];
|
|
463
|
+
try {
|
|
464
|
+
names = readdirSync(dir);
|
|
465
|
+
}
|
|
466
|
+
catch {
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
for (const n of names)
|
|
470
|
+
if (/^[0-9a-f]{32}\.png$/.test(n) && !ids.has(n.slice(0, 32))) {
|
|
471
|
+
try {
|
|
472
|
+
rmSync(join(dir, n), { force: true });
|
|
473
|
+
}
|
|
474
|
+
catch { /* next time */ }
|
|
475
|
+
}
|
|
276
476
|
}
|
|
277
|
-
/**
|
|
278
|
-
|
|
477
|
+
/**
|
|
478
|
+
* #2692: bring back a pack's previous version. The version it replaces becomes the previous one (a restore is undone
|
|
479
|
+
* the same way); a deleted pack whose previous was kept comes back with none. pack.json is renamed over in one step.
|
|
480
|
+
*/
|
|
481
|
+
restore(id) {
|
|
279
482
|
const s = this.load();
|
|
280
483
|
if (s === "unreadable")
|
|
281
484
|
return refuse(503, "skins_unreadable");
|
|
282
|
-
|
|
485
|
+
const previous = ID.test(id) ? s.previous.get(id) : undefined, current = s.packs.get(id);
|
|
486
|
+
if (!previous)
|
|
487
|
+
return refuse(404, "skin_no_previous", `"${id}" has no previous version kept`);
|
|
488
|
+
if (!current && s.packs.size >= SKIN_LIMITS.packs)
|
|
489
|
+
return refuse(409, "skins_quota", `at most ${SKIN_LIMITS.packs} packs`);
|
|
490
|
+
const home = join(this.dir, id);
|
|
491
|
+
if (!current && s.away.has(id)) {
|
|
492
|
+
// A deleted pack's kept previous: its pack.json written in its own directory, which then becomes the pack's in one rename.
|
|
493
|
+
const away = join(this.dir, keptDir(id));
|
|
494
|
+
if (existsSync(home))
|
|
495
|
+
return refuse(409, "skin_exists", `"${id}" is kept already: delete it first`);
|
|
496
|
+
try {
|
|
497
|
+
this.hooks.beforeSwap?.(id);
|
|
498
|
+
atomicWriteFileSync(join(away, "pack.json"), previous.text, { mode: 0o600 });
|
|
499
|
+
renameSync(away, home); // the swap
|
|
500
|
+
}
|
|
501
|
+
catch (err) {
|
|
502
|
+
try {
|
|
503
|
+
rmSync(join(away, "pack.json"), { force: true });
|
|
504
|
+
}
|
|
505
|
+
catch { /* not read in a kept directory */ }
|
|
506
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
507
|
+
}
|
|
508
|
+
s.away.delete(id);
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
try {
|
|
512
|
+
this.hooks.beforeSwap?.(id);
|
|
513
|
+
atomicWriteFileSync(join(home, "pack.json"), previous.text, { mode: 0o600 }); // the swap
|
|
514
|
+
}
|
|
515
|
+
catch (err) {
|
|
516
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
try {
|
|
520
|
+
if (current)
|
|
521
|
+
atomicWriteFileSync(join(home, PREVIOUS_FILE), current.text, { mode: 0o600 });
|
|
522
|
+
else
|
|
523
|
+
rmSync(join(home, PREVIOUS_FILE), { force: true });
|
|
524
|
+
}
|
|
525
|
+
catch { /* the previous file still names the restored version: restoring again changes nothing */ }
|
|
526
|
+
s.packs.set(id, previous);
|
|
527
|
+
if (current)
|
|
528
|
+
s.previous.set(id, current);
|
|
529
|
+
else
|
|
530
|
+
s.previous.delete(id);
|
|
531
|
+
return { ok: true, rev: this.rev(), pack: summaryOf(previous.record), replaced: current ? summaryOf(current.record) : null };
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Remove a pack (DELETE /ui/office-skins/<id>). Offices naming it are drawn in a built-in style until it is back. Its
|
|
535
|
+
* previous version goes with it — unless `keepPrevious` (#2692), which removes only the current one, so a restore can
|
|
536
|
+
* bring the previous back: the pack's directory is renamed to keptDir(id) at once (gone for every reader, an older
|
|
537
|
+
* host's too, the id free there), then its pack.json and the current version's own pictures are removed. A deleted
|
|
538
|
+
* pack's kept previous is removed by deleting it again.
|
|
539
|
+
*/
|
|
540
|
+
remove(id, opts = {}) {
|
|
541
|
+
const s = this.load();
|
|
542
|
+
if (s === "unreadable")
|
|
543
|
+
return refuse(503, "skins_unreadable");
|
|
544
|
+
const current = ID.test(id) ? s.packs.get(id) : undefined, previous = ID.test(id) ? s.previous.get(id) : undefined;
|
|
545
|
+
if (!current && !previous)
|
|
283
546
|
return refuse(404, "skin_unknown");
|
|
547
|
+
if (opts.keepPrevious && previous && current) {
|
|
548
|
+
const away = join(this.dir, keptDir(id));
|
|
549
|
+
try {
|
|
550
|
+
rmSync(away, { recursive: true, force: true });
|
|
551
|
+
renameSync(join(this.dir, id), away);
|
|
552
|
+
}
|
|
553
|
+
catch (err) {
|
|
554
|
+
return refuse(503, "skin_write_failed", err.message);
|
|
555
|
+
}
|
|
556
|
+
try {
|
|
557
|
+
rmSync(join(away, "pack.json"), { force: true });
|
|
558
|
+
}
|
|
559
|
+
catch { /* never read in a kept directory */ }
|
|
560
|
+
s.packs.delete(id);
|
|
561
|
+
s.away.add(id);
|
|
562
|
+
this.sweep(away, previous.record);
|
|
563
|
+
return { ok: true, rev: this.rev(), removed: summaryOf(current.record), previous_kept: true };
|
|
564
|
+
}
|
|
565
|
+
if (opts.keepPrevious && !current)
|
|
566
|
+
return refuse(404, "skin_unknown", `"${id}" is deleted already; its previous version is kept`);
|
|
284
567
|
const gone = join(this.dir, `.rm-${randomBytes(8).toString("hex")}`);
|
|
285
568
|
try {
|
|
286
|
-
renameSync(join(this.dir, id), gone);
|
|
569
|
+
renameSync(join(this.dir, current ? id : keptDir(id)), gone);
|
|
287
570
|
}
|
|
288
571
|
catch (err) {
|
|
289
572
|
return refuse(503, "skin_write_failed", err.message);
|
|
290
573
|
}
|
|
291
574
|
s.packs.delete(id);
|
|
575
|
+
s.previous.delete(id);
|
|
576
|
+
s.away.delete(id);
|
|
292
577
|
try {
|
|
293
578
|
rmSync(gone, { recursive: true, force: true });
|
|
294
579
|
}
|
|
295
580
|
catch { /* removed on the next load */ }
|
|
296
|
-
return { ok: true, rev: this.rev() };
|
|
581
|
+
return { ok: true, rev: this.rev(), removed: current ? summaryOf(current.record) : null, previous_kept: false };
|
|
297
582
|
}
|
|
298
583
|
}
|
|
299
584
|
//# 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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"}
|
|
@@ -58,6 +58,21 @@ export type OfficeWrite = {
|
|
|
58
58
|
};
|
|
59
59
|
/** A whole list of offices, as a person sends it: every rule, or a refusal naming where it broke. */
|
|
60
60
|
export declare function checkOffices(raw: unknown, packOf?: OverridePack): OfficeCheck;
|
|
61
|
+
/** The overrides parts kept beside the offices on disk, apart from the rest (#2665 night places, #2691 seat reservations). */
|
|
62
|
+
declare const BESIDE: readonly ["furnitureNight", "seatFor"];
|
|
63
|
+
type Beside = (typeof BESIDE)[number];
|
|
64
|
+
type OnDisk = {
|
|
65
|
+
offices: Office[];
|
|
66
|
+
overrides?: Record<string, LayoutOverrides>;
|
|
67
|
+
} & {
|
|
68
|
+
[K in Beside]?: Record<string, NonNullable<LayoutOverrides[K]>>;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* #2665/#2706: what goes on disk — the offices without their overrides; beside them, by office id, each office's
|
|
72
|
+
* overrides without those parts, and each part on its own (none: no key). The maps have no prototype (#2708 review), so
|
|
73
|
+
* an id is always an own key; exported for tests.
|
|
74
|
+
*/
|
|
75
|
+
export declare function officesOnDisk(offices: Office[]): OnDisk;
|
|
61
76
|
export declare class OfficeStore {
|
|
62
77
|
private readonly packOf?;
|
|
63
78
|
private state;
|
|
@@ -75,9 +90,12 @@ export declare class OfficeStore {
|
|
|
75
90
|
};
|
|
76
91
|
/**
|
|
77
92
|
* 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.
|
|
93
|
+
* 409, so two editors never overwrite each other unseen. On disk first, then in memory. `packOf` (#2692): the packs to
|
|
94
|
+
* 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
95
|
*/
|
|
80
|
-
replace(raw: unknown, expectedRev?: number
|
|
96
|
+
replace(raw: unknown, expectedRev?: number, opts?: {
|
|
97
|
+
packOf?: OverridePack;
|
|
98
|
+
}): OfficeWrite;
|
|
81
99
|
}
|
|
82
100
|
/**
|
|
83
101
|
* Office review (#2399 carry): how often one person may save the offices (PUT /ui/offices). An editor saves on an explicit
|
|
@@ -108,3 +126,4 @@ export declare class OfficeWriteLimiter {
|
|
|
108
126
|
/** Count an accepted save. */
|
|
109
127
|
record(person: string): void;
|
|
110
128
|
}
|
|
129
|
+
export {};
|