@chatwarden/store-memory 0.1.1 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  # @chatwarden/store-memory
2
2
 
3
3
  The in-memory store for Chatwarden, the open-source chat moderation kit for games. It keeps everything the kit stores (people as
4
- hashed identifiers, reports, sanctions, strikes, mutes, notices, decisions, the audit trail) in plain JavaScript objects inside
4
+ hashed identifiers, reports, sanctions, strikes, mutes, notices, decisions, the audit trail, moderators' claims and saved reasons) in plain JavaScript objects inside
5
5
  your process. Nothing is written to disk.
6
6
 
7
7
  **It is memory only. Everything is lost when the process restarts, exits or stops.** It is for tests, demos and single-process
@@ -82,6 +82,9 @@ How it behaves:
82
82
  rethrown. Calls nest: an inner failure the outer function catches undoes only the inner writes.
83
83
  - **Same behaviour as the SQLite store.** Both stores run one shared store contract suite (ordering, paging, uniqueness, rollback,
84
84
  what each purge deletes). Where they ever disagree, the SQLite store is the reference and this one is the bug.
85
+ - **The editable profile.** It implements `loadPolicyLayer` and `savePolicyLayer`, so `cw.policy.save` works. The stored layer lives in
86
+ the heap with everything else: it is lost when the process ends, so a profile edited at runtime goes back to your code's profile
87
+ on restart. Use the SQLite store (or your own) for edits that must last.
85
88
  - **One process, one thread.** It is a set of objects in your heap. Two processes, or two workers, each get their own empty store.
86
89
  - **No size limit.** Memory grows with what you store until the retention purge runs or the process ends.
87
90
 
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.1.1";
1
+ export declare const VERSION = "0.1.3";
2
2
  export { MemoryStore, createMemoryStore } from './memoryStore.js';
3
3
  export type { StoredReportRow, StoredSanction } from './memoryStore.js';
4
4
  //# sourceMappingURL=index.d.ts.map
package/dist/src/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export const VERSION = '0.1.1';
1
+ export const VERSION = '0.1.3';
2
2
  export { MemoryStore, createMemoryStore } from './memoryStore.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import type { AuditListQuery, AuditRow, DecisionRow, MuteRow, NoticeRow, ReportActivity, ReportListQuery, ReportRecord, SanctionRow, Store, StoredReport, StrikeRow, SubjectIdRecord, SubjectId, SubjectRecord, WebhookKeyReservation, DiscordThreadRow } from '@chatwarden/core';
1
+ import type { AuditListQuery, AuditRow, ClaimAttempt, ClaimMode, ClaimRow, DecisionRow, MuteRow, NoticeRow, OpenReportQuery, PolicyLayer, ReasonRow, ReportActivity, ReportListQuery, ReportRecord, ReporterDecision, ReporterTally, SanctionListQuery, SanctionRow, Store, StoredReport, StrikeRow, SubjectIdRecord, SubjectId, SubjectRecord, WebhookKeyReservation, DiscordThreadRow } from '@chatwarden/core';
2
2
  /** A report plus the moderation columns a decision fills. */
3
3
  export type StoredReportRow = ReportRecord;
4
4
  /** A stored sanction row plus its revocation, as the SQL table keeps it. */
@@ -51,9 +51,22 @@ export declare class MemoryStore implements Store {
51
51
  protected discordThreads: Map<string, DiscordThreadRow>;
52
52
  /** Group id that owns each ref code: the O(1) collision check. */
53
53
  protected refOwners: Map<string, string>;
54
+ /** Soft claims by person (one row each; an expired one is replaced or ignored, never swept). */
55
+ protected claims: Map<string, ClaimRow>;
56
+ /** Saved reasons in the order they were added. */
57
+ protected reasons: ReasonRow[];
58
+ /** The stored policy layer and its version, or null when none was ever saved. */
59
+ protected policy: {
60
+ layer: PolicyLayer;
61
+ version: number;
62
+ } | null;
63
+ /** The change token's counter (see `changeToken`). */
64
+ private changes;
54
65
  /** Undo steps of the innermost open transaction, or null outside one. */
55
66
  private journal;
56
67
  private undoWith;
68
+ /** Move the change token; an undone transaction moves it back. */
69
+ private bump;
57
70
  schemaVersion(): number;
58
71
  /**
59
72
  * Synchronous like the real thing. Writes inside are journaled as undo steps
@@ -81,8 +94,25 @@ export declare class MemoryStore implements Store {
81
94
  loadSanctions(now: number): SanctionRow[];
82
95
  loadSubjectActions(since: number): SanctionRow[];
83
96
  private sanctionRow;
97
+ listSubjectSanctions(q: SanctionListQuery): SanctionRow[];
84
98
  listGaps(): SanctionRow[];
85
99
  closeGap(groupId: string, status: 'ruled' | 'not_a_rule', ref: string | null, actor: string, at: number): boolean;
100
+ changeToken(): string;
101
+ claimCase(person: SubjectId, by: string, now: number, until: number, mode: ClaimMode): ClaimAttempt;
102
+ releaseClaim(person: SubjectId, by: string, now: number): boolean;
103
+ loadClaims(persons: readonly SubjectId[], now: number): ClaimRow[];
104
+ listReasons(): ReasonRow[];
105
+ insertReason(row: ReasonRow): void;
106
+ updateReason(id: string, patch: {
107
+ label?: string;
108
+ text?: string;
109
+ }): boolean;
110
+ setReasonActive(id: string, active: boolean): boolean;
111
+ loadPolicyLayer(): {
112
+ layer: PolicyLayer;
113
+ version: number;
114
+ } | null;
115
+ savePolicyLayer(layer: PolicyLayer, expectedVersion: number): number | null;
86
116
  insertAudit(row: AuditRow): void;
87
117
  listAudit(q: AuditListQuery): AuditRow[];
88
118
  purgeAudit(before: number): number;
@@ -98,6 +128,11 @@ export declare class MemoryStore implements Store {
98
128
  pruneMutes(viewer: SubjectId, keep: number): SubjectId[];
99
129
  insertStrike(row: StrikeRow): void;
100
130
  loadStrikes(since: number): StrikeRow[];
131
+ listStrikes(since: number, limit: number): StrikeRow[];
132
+ countStrikesByTerm(since: number): Array<{
133
+ termId: string;
134
+ count: number;
135
+ }>;
101
136
  loadAutoChatStarts(): Array<{
102
137
  subject: SubjectId;
103
138
  startsAt: number;
@@ -105,7 +140,17 @@ export declare class MemoryStore implements Store {
105
140
  insertReport(row: StoredReport): boolean;
106
141
  loadReport(id: string): ReportRecord | null;
107
142
  listReportsByPerson(subjects: readonly SubjectId[], limit: number): ReportRecord[];
143
+ listOpenReports(q: OpenReportQuery): ReportRecord[];
144
+ listOpenReportsByPerson(subjects: readonly SubjectId[], limit: number): ReportRecord[];
145
+ reporterTally(reporters: readonly SubjectId[]): ReporterTally;
108
146
  listReports(q: ReportListQuery): ReportRecord[];
147
+ loadReporterDecisions(reporters: readonly SubjectId[]): ReporterDecision[];
148
+ addReportDetail(id: string, detail: {
149
+ reportedReason: string | null;
150
+ category: ReportRecord['category'];
151
+ note: string | null;
152
+ at: number;
153
+ }): boolean;
109
154
  closeReport(id: string, status: 'actioned' | 'dismissed', badFaith: boolean, actor: string, at: number, note: string, evidence?: string | null): boolean;
110
155
  insertDecision(key: string, reportId: string, at: number, resultJson: string): void;
111
156
  findDecision(key: string): DecisionRow | null;
@@ -1 +1 @@
1
- {"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../src/memoryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../src/memoryStore.ts"],"names":[],"mappings":"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"}
@@ -47,11 +47,26 @@ export class MemoryStore {
47
47
  discordThreads = new Map();
48
48
  /** Group id that owns each ref code: the O(1) collision check. */
49
49
  refOwners = new Map();
50
+ /** Soft claims by person (one row each; an expired one is replaced or ignored, never swept). */
51
+ claims = new Map();
52
+ /** Saved reasons in the order they were added. */
53
+ reasons = [];
54
+ /** The stored policy layer and its version, or null when none was ever saved. */
55
+ policy = null;
56
+ /** The change token's counter (see `changeToken`). */
57
+ changes = 0;
50
58
  /** Undo steps of the innermost open transaction, or null outside one. */
51
59
  journal = null;
52
60
  undoWith(step) {
53
61
  this.journal?.push(step);
54
62
  }
63
+ /** Move the change token; an undone transaction moves it back. */
64
+ bump() {
65
+ this.changes += 1;
66
+ this.undoWith(() => {
67
+ this.changes -= 1;
68
+ });
69
+ }
55
70
  schemaVersion() {
56
71
  return 0;
57
72
  }
@@ -149,6 +164,7 @@ export class MemoryStore {
149
164
  if (addedCode)
150
165
  this.refOwners.delete(first.refCode);
151
166
  });
167
+ this.bump();
152
168
  return true;
153
169
  }
154
170
  revokeSanctionGroup(groupId, actor, at, reason) {
@@ -168,6 +184,8 @@ export class MemoryStore {
168
184
  r.revokeReason = null;
169
185
  }
170
186
  });
187
+ if (touched.length > 0)
188
+ this.bump();
171
189
  return touched.length;
172
190
  }
173
191
  sanctionRefCode(groupId) {
@@ -208,6 +226,32 @@ export class MemoryStore {
208
226
  pending: r.pending,
209
227
  };
210
228
  }
229
+ listSubjectSanctions(q) {
230
+ const limit = Math.min(200, Math.max(1, Math.floor(q.limit)));
231
+ const wanted = q.subjects === undefined ? null : new Set(q.subjects);
232
+ return this.sanctions
233
+ .filter((r) => {
234
+ if (r.targetType !== 'subject')
235
+ return false;
236
+ if (wanted !== null && !wanted.has(r.value))
237
+ return false;
238
+ if (q.source !== undefined && r.source !== q.source)
239
+ return false;
240
+ if (q.activeAt !== undefined && !(r.revokedAt === null && (r.endsAt === null || r.endsAt > q.activeAt)))
241
+ return false;
242
+ if (q.since !== undefined && r.startsAt < q.since && !(q.alsoPermanent === true && r.endsAt === null && r.revokedAt === null)) {
243
+ return false;
244
+ }
245
+ if (q.before === undefined)
246
+ return true;
247
+ if (r.startsAt !== q.before)
248
+ return r.startsAt < q.before;
249
+ return q.beforeId !== undefined && compare(r.id, q.beforeId) < 0;
250
+ })
251
+ .sort((a, b) => b.startsAt - a.startsAt || compare(b.id, a.id))
252
+ .slice(0, limit)
253
+ .map((r) => ({ ...this.sanctionRow(r), revokedAt: r.revokedAt, revokedBy: r.revokedBy, revokeReason: r.revokeReason }));
254
+ }
211
255
  listGaps() {
212
256
  // Newest first; insertion order breaks a tie, like SQLite's rowid.
213
257
  return this.sanctions
@@ -244,8 +288,108 @@ export class MemoryStore {
244
288
  row.gapClosedAt = null;
245
289
  this.auditRows.splice(this.auditRows.indexOf(entry), 1);
246
290
  });
291
+ this.bump();
292
+ return true;
293
+ }
294
+ // Team workbench (synchronous, see the Store interface). Single-threaded, so each check-and-set below is atomic.
295
+ changeToken() {
296
+ return String(this.changes);
297
+ }
298
+ claimCase(person, by, now, until, mode) {
299
+ const prior = this.claims.get(person);
300
+ const live = prior !== undefined && prior.until > now ? prior : undefined;
301
+ const mine = live !== undefined && live.by === by;
302
+ const wins = live === undefined || (mode === 'takeover') || (mine && mode === 'claim');
303
+ if (!wins)
304
+ return { won: false, claim: { ...live } };
305
+ const claim = { person, by, since: mine ? live.since : now, until };
306
+ this.claims.set(person, claim);
307
+ this.undoWith(() => {
308
+ if (prior === undefined)
309
+ this.claims.delete(person);
310
+ else
311
+ this.claims.set(person, prior);
312
+ });
313
+ // A heartbeat keeps the owner; everything else (fresh, expired, taken over) changes it.
314
+ if (!mine)
315
+ this.bump();
316
+ return { won: true, claim: { ...claim }, from: live !== undefined && !mine ? live.by : null };
317
+ }
318
+ releaseClaim(person, by, now) {
319
+ const prior = this.claims.get(person);
320
+ if (prior === undefined || prior.by !== by)
321
+ return false;
322
+ this.claims.delete(person);
323
+ this.undoWith(() => this.claims.set(person, prior));
324
+ if (prior.until <= now)
325
+ return false;
326
+ this.bump();
247
327
  return true;
248
328
  }
329
+ loadClaims(persons, now) {
330
+ const out = [];
331
+ for (const person of new Set(persons)) {
332
+ const c = this.claims.get(person);
333
+ if (c !== undefined && c.until > now)
334
+ out.push({ ...c });
335
+ }
336
+ return out.sort((a, b) => compare(a.person, b.person));
337
+ }
338
+ listReasons() {
339
+ return this.reasons.map((r) => ({ ...r }));
340
+ }
341
+ insertReason(row) {
342
+ if (this.reasons.some((r) => r.id === row.id))
343
+ throw new Error('UNIQUE constraint failed: kit_reasons.id');
344
+ this.reasons.push({ id: row.id, label: row.label, text: row.text, active: row.active });
345
+ this.undoWith(() => {
346
+ this.reasons.length -= 1;
347
+ });
348
+ this.bump();
349
+ }
350
+ updateReason(id, patch) {
351
+ const r = this.reasons.find((x) => x.id === id);
352
+ if (r === undefined)
353
+ return false;
354
+ const before = { label: r.label, text: r.text };
355
+ const label = patch.label ?? r.label;
356
+ const text = patch.text ?? r.text;
357
+ if (label === before.label && text === before.text)
358
+ return true;
359
+ r.label = label;
360
+ r.text = text;
361
+ this.undoWith(() => Object.assign(r, before));
362
+ this.bump();
363
+ return true;
364
+ }
365
+ setReasonActive(id, active) {
366
+ const r = this.reasons.find((x) => x.id === id);
367
+ if (r === undefined)
368
+ return false;
369
+ if (r.active === active)
370
+ return true;
371
+ r.active = active;
372
+ this.undoWith(() => {
373
+ r.active = !active;
374
+ });
375
+ this.bump();
376
+ return true;
377
+ }
378
+ // The editable profile's stored layer (synchronous, see the Store interface). Not a queue change: it does not move the token.
379
+ loadPolicyLayer() {
380
+ return this.policy === null ? null : { layer: structuredClone(this.policy.layer), version: this.policy.version };
381
+ }
382
+ savePolicyLayer(layer, expectedVersion) {
383
+ const current = this.policy?.version ?? 0;
384
+ if (expectedVersion !== current)
385
+ return null;
386
+ const prior = this.policy;
387
+ this.policy = { layer: structuredClone(layer), version: current + 1 };
388
+ this.undoWith(() => {
389
+ this.policy = prior;
390
+ });
391
+ return current + 1;
392
+ }
249
393
  // Staff audit trail (synchronous, see the Store interface).
250
394
  insertAudit(row) {
251
395
  if (this.auditRows.some((r) => r.id === row.id))
@@ -402,6 +546,21 @@ export class MemoryStore {
402
546
  .sort((a, b) => a.at - b.at)
403
547
  .map((r) => ({ ...r }));
404
548
  }
549
+ listStrikes(since, limit) {
550
+ const n = Math.min(500, Math.max(1, Math.floor(limit)));
551
+ return this.strikes
552
+ .filter((r) => r.at >= since)
553
+ .sort((a, b) => b.at - a.at || compare(b.id, a.id))
554
+ .slice(0, n)
555
+ .map((r) => ({ ...r }));
556
+ }
557
+ countStrikesByTerm(since) {
558
+ const counts = new Map();
559
+ for (const r of this.strikes)
560
+ if (r.at >= since)
561
+ counts.set(r.termId, (counts.get(r.termId) ?? 0) + 1);
562
+ return [...counts].sort((a, b) => compare(a[0], b[0])).map(([termId, count]) => ({ termId, count }));
563
+ }
405
564
  loadAutoChatStarts() {
406
565
  const latest = new Map();
407
566
  for (const r of this.sanctions) {
@@ -421,6 +580,8 @@ export class MemoryStore {
421
580
  throw new Error('UNIQUE constraint failed: kit_reports.id');
422
581
  this.reports.push({
423
582
  ...structuredClone(row),
583
+ reportedReason: row.reportedReason ?? null,
584
+ detailAt: null,
424
585
  badFaith: false,
425
586
  actionedAt: null,
426
587
  actionedBy: null,
@@ -430,6 +591,7 @@ export class MemoryStore {
430
591
  this.undoWith(() => {
431
592
  this.reports.length -= 1;
432
593
  });
594
+ this.bump();
433
595
  return true;
434
596
  }
435
597
  loadReport(id) {
@@ -445,12 +607,55 @@ export class MemoryStore {
445
607
  .slice(0, n)
446
608
  .map((r) => structuredClone(r));
447
609
  }
610
+ listOpenReports(q) {
611
+ const limit = Math.min(200, Math.max(1, Math.floor(q.limit)));
612
+ return this.reports
613
+ .filter((r) => {
614
+ if (r.status !== 'open')
615
+ return false;
616
+ if (q.category !== undefined && r.category !== q.category)
617
+ return false;
618
+ if (q.reason !== undefined && (r.reportedReason ?? null) !== q.reason)
619
+ return false;
620
+ if (q.after === undefined)
621
+ return true;
622
+ if (r.createdAt !== q.after)
623
+ return r.createdAt > q.after;
624
+ return q.afterId !== undefined && compare(r.id, q.afterId) > 0;
625
+ })
626
+ .sort((a, b) => a.createdAt - b.createdAt || compare(a.id, b.id))
627
+ .slice(0, limit)
628
+ .map((r) => structuredClone(r));
629
+ }
630
+ listOpenReportsByPerson(subjects, limit) {
631
+ const n = Math.min(200, Math.max(1, Math.floor(limit)));
632
+ const wanted = new Set(subjects);
633
+ return this.reports
634
+ .filter((r) => r.status === 'open' && wanted.has(r.targetSubject))
635
+ .sort((a, b) => b.createdAt - a.createdAt || compare(b.id, a.id))
636
+ .slice(0, n)
637
+ .map((r) => structuredClone(r));
638
+ }
639
+ reporterTally(reporters) {
640
+ const tally = { open: 0, actioned: 0, dismissed: 0, badFaith: 0 };
641
+ const wanted = new Set(reporters);
642
+ for (const r of this.reports) {
643
+ if (!wanted.has(r.reporterSubject))
644
+ continue;
645
+ tally[r.status] += 1;
646
+ if (r.badFaith)
647
+ tally.badFaith += 1;
648
+ }
649
+ return tally;
650
+ }
448
651
  listReports(q) {
449
652
  const limit = Math.min(200, Math.max(1, Math.floor(q.limit)));
450
653
  return this.reports
451
654
  .filter((r) => {
452
655
  if (q.status !== undefined && r.status !== q.status)
453
656
  return false;
657
+ if (q.reason !== undefined && r.reportedReason !== q.reason)
658
+ return false;
454
659
  if (q.before === undefined)
455
660
  return true;
456
661
  if (r.createdAt !== q.before)
@@ -461,6 +666,58 @@ export class MemoryStore {
461
666
  .slice(0, limit)
462
667
  .map((r) => structuredClone(r));
463
668
  }
669
+ loadReporterDecisions(reporters) {
670
+ const wanted = new Set(reporters);
671
+ const out = [];
672
+ // The newest 200 decided reports with a reason, newest first.
673
+ const decided = this.reports
674
+ .filter((r) => wanted.has(r.reporterSubject) && r.status !== 'open' && (r.reportedReason ?? null) !== null)
675
+ .sort((a, b) => b.createdAt - a.createdAt || compare(b.id, a.id))
676
+ .slice(0, 200);
677
+ for (const r of decided) {
678
+ if (r.reportedReason == null || r.status === 'open')
679
+ continue;
680
+ const groups = new Set();
681
+ for (const d of this.decisions.values()) {
682
+ if (d.reportId !== r.id)
683
+ continue;
684
+ // A row that cannot be read is a decision with no known actions, never a failure of the call.
685
+ let parsed;
686
+ try {
687
+ parsed = JSON.parse(d.resultJson);
688
+ }
689
+ catch {
690
+ parsed = null;
691
+ }
692
+ if (parsed !== null && Array.isArray(parsed.groups)) {
693
+ for (const g of parsed.groups)
694
+ if (typeof g?.groupId === 'string')
695
+ groups.add(g.groupId);
696
+ }
697
+ }
698
+ const actions = [];
699
+ for (const s of this.sanctions) {
700
+ if (!groups.has(s.groupId) || s.targetType !== 'subject')
701
+ continue;
702
+ actions.push({ subject: s.value, rule: s.rule !== null && /^[1-9][0-9]*$/.test(s.rule) ? Number(s.rule) : 'uncovered' });
703
+ }
704
+ out.push({ reportId: r.id, status: r.status, reason: r.reportedReason, target: r.targetSubject, actions });
705
+ }
706
+ return out;
707
+ }
708
+ addReportDetail(id, detail) {
709
+ const r = this.reports.find((x) => x.id === id);
710
+ if (r === undefined || r.status !== 'open' || r.detailAt !== null)
711
+ return false;
712
+ const before = { reportedReason: r.reportedReason, category: r.category, note: r.note, detailAt: r.detailAt };
713
+ r.reportedReason = detail.reportedReason;
714
+ r.category = detail.category;
715
+ r.note = detail.note;
716
+ r.detailAt = detail.at;
717
+ this.undoWith(() => Object.assign(r, before));
718
+ this.bump();
719
+ return true;
720
+ }
464
721
  closeReport(id, status, badFaith, actor, at, note, evidence = null) {
465
722
  const r = this.reports.find((x) => x.id === id);
466
723
  if (r === undefined || r.status !== 'open')
@@ -482,6 +739,7 @@ export class MemoryStore {
482
739
  r.modNote = note;
483
740
  r.badFaithEvidence = evidence;
484
741
  this.undoWith(() => Object.assign(r, before));
742
+ this.bump();
485
743
  return true;
486
744
  }
487
745
  insertDecision(key, reportId, at, resultJson) {
@@ -1 +1 @@
1
- {"version":3,"file":"memoryStore.js","sourceRoot":"","sources":["../../src/memoryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryStore.js","sourceRoot":"","sources":["../../src/memoryStore.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chatwarden/store-memory",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "private": false,
5
5
  "description": "In-memory store for Chatwarden chat moderation, for tests, demos and single-process prototypes. Journaled and transactional; runs in a browser.",
6
6
  "license": "Apache-2.0",
@@ -44,10 +44,10 @@
44
44
  "prepack": "tsc -b"
45
45
  },
46
46
  "peerDependencies": {
47
- "@chatwarden/core": "^0.1.0"
47
+ "@chatwarden/core": "^0.1.2"
48
48
  },
49
49
  "devDependencies": {
50
- "@chatwarden/core": "0.1.1"
50
+ "@chatwarden/core": "0.1.3"
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export const VERSION = '0.1.1';
1
+ export const VERSION = '0.1.3';
2
2
 
3
3
  export { MemoryStore, createMemoryStore } from './memoryStore.js';
4
4
  export type { StoredReportRow, StoredSanction } from './memoryStore.js';
@@ -1,12 +1,21 @@
1
1
  import type {
2
2
  AuditListQuery,
3
3
  AuditRow,
4
+ ClaimAttempt,
5
+ ClaimMode,
6
+ ClaimRow,
4
7
  DecisionRow,
5
8
  MuteRow,
6
9
  NoticeRow,
10
+ OpenReportQuery,
11
+ PolicyLayer,
12
+ ReasonRow,
7
13
  ReportActivity,
8
14
  ReportListQuery,
9
15
  ReportRecord,
16
+ ReporterDecision,
17
+ ReporterTally,
18
+ SanctionListQuery,
10
19
  SanctionRow,
11
20
  Store,
12
21
  StoredReport,
@@ -82,6 +91,14 @@ export class MemoryStore implements Store {
82
91
  protected discordThreads = new Map<string, DiscordThreadRow>();
83
92
  /** Group id that owns each ref code: the O(1) collision check. */
84
93
  protected refOwners = new Map<string, string>();
94
+ /** Soft claims by person (one row each; an expired one is replaced or ignored, never swept). */
95
+ protected claims = new Map<SubjectId, ClaimRow>();
96
+ /** Saved reasons in the order they were added. */
97
+ protected reasons: ReasonRow[] = [];
98
+ /** The stored policy layer and its version, or null when none was ever saved. */
99
+ protected policy: { layer: PolicyLayer; version: number } | null = null;
100
+ /** The change token's counter (see `changeToken`). */
101
+ private changes = 0;
85
102
  /** Undo steps of the innermost open transaction, or null outside one. */
86
103
  private journal: Array<() => void> | null = null;
87
104
 
@@ -89,6 +106,14 @@ export class MemoryStore implements Store {
89
106
  this.journal?.push(step);
90
107
  }
91
108
 
109
+ /** Move the change token; an undone transaction moves it back. */
110
+ private bump(): void {
111
+ this.changes += 1;
112
+ this.undoWith(() => {
113
+ this.changes -= 1;
114
+ });
115
+ }
116
+
92
117
  schemaVersion(): number {
93
118
  return 0;
94
119
  }
@@ -187,6 +212,7 @@ export class MemoryStore implements Store {
187
212
  this.sanctions.length -= rows.length;
188
213
  if (addedCode) this.refOwners.delete(first.refCode);
189
214
  });
215
+ this.bump();
190
216
  return true;
191
217
  }
192
218
 
@@ -206,6 +232,7 @@ export class MemoryStore implements Store {
206
232
  r.revokeReason = null;
207
233
  }
208
234
  });
235
+ if (touched.length > 0) this.bump();
209
236
  return touched.length;
210
237
  }
211
238
 
@@ -252,6 +279,27 @@ export class MemoryStore implements Store {
252
279
  };
253
280
  }
254
281
 
282
+ listSubjectSanctions(q: SanctionListQuery): SanctionRow[] {
283
+ const limit = Math.min(200, Math.max(1, Math.floor(q.limit)));
284
+ const wanted = q.subjects === undefined ? null : new Set(q.subjects);
285
+ return this.sanctions
286
+ .filter((r) => {
287
+ if (r.targetType !== 'subject') return false;
288
+ if (wanted !== null && !wanted.has(r.value)) return false;
289
+ if (q.source !== undefined && r.source !== q.source) return false;
290
+ if (q.activeAt !== undefined && !(r.revokedAt === null && (r.endsAt === null || r.endsAt > q.activeAt))) return false;
291
+ if (q.since !== undefined && r.startsAt < q.since && !(q.alsoPermanent === true && r.endsAt === null && r.revokedAt === null)) {
292
+ return false;
293
+ }
294
+ if (q.before === undefined) return true;
295
+ if (r.startsAt !== q.before) return r.startsAt < q.before;
296
+ return q.beforeId !== undefined && compare(r.id, q.beforeId) < 0;
297
+ })
298
+ .sort((a, b) => b.startsAt - a.startsAt || compare(b.id, a.id))
299
+ .slice(0, limit)
300
+ .map((r) => ({ ...this.sanctionRow(r), revokedAt: r.revokedAt, revokedBy: r.revokedBy, revokeReason: r.revokeReason }));
301
+ }
302
+
255
303
  listGaps(): SanctionRow[] {
256
304
  // Newest first; insertion order breaks a tie, like SQLite's rowid.
257
305
  return this.sanctions
@@ -287,9 +335,108 @@ export class MemoryStore implements Store {
287
335
  row.gapClosedAt = null;
288
336
  this.auditRows.splice(this.auditRows.indexOf(entry), 1);
289
337
  });
338
+ this.bump();
339
+ return true;
340
+ }
341
+
342
+ // Team workbench (synchronous, see the Store interface). Single-threaded, so each check-and-set below is atomic.
343
+
344
+ changeToken(): string {
345
+ return String(this.changes);
346
+ }
347
+
348
+ claimCase(person: SubjectId, by: string, now: number, until: number, mode: ClaimMode): ClaimAttempt {
349
+ const prior = this.claims.get(person);
350
+ const live = prior !== undefined && prior.until > now ? prior : undefined;
351
+ const mine = live !== undefined && live.by === by;
352
+ const wins = live === undefined || (mode === 'takeover') || (mine && mode === 'claim');
353
+ if (!wins) return { won: false, claim: { ...live! } };
354
+ const claim: ClaimRow = { person, by, since: mine ? live.since : now, until };
355
+ this.claims.set(person, claim);
356
+ this.undoWith(() => {
357
+ if (prior === undefined) this.claims.delete(person);
358
+ else this.claims.set(person, prior);
359
+ });
360
+ // A heartbeat keeps the owner; everything else (fresh, expired, taken over) changes it.
361
+ if (!mine) this.bump();
362
+ return { won: true, claim: { ...claim }, from: live !== undefined && !mine ? live.by : null };
363
+ }
364
+
365
+ releaseClaim(person: SubjectId, by: string, now: number): boolean {
366
+ const prior = this.claims.get(person);
367
+ if (prior === undefined || prior.by !== by) return false;
368
+ this.claims.delete(person);
369
+ this.undoWith(() => this.claims.set(person, prior));
370
+ if (prior.until <= now) return false;
371
+ this.bump();
290
372
  return true;
291
373
  }
292
374
 
375
+ loadClaims(persons: readonly SubjectId[], now: number): ClaimRow[] {
376
+ const out: ClaimRow[] = [];
377
+ for (const person of new Set(persons)) {
378
+ const c = this.claims.get(person);
379
+ if (c !== undefined && c.until > now) out.push({ ...c });
380
+ }
381
+ return out.sort((a, b) => compare(a.person, b.person));
382
+ }
383
+
384
+ listReasons(): ReasonRow[] {
385
+ return this.reasons.map((r) => ({ ...r }));
386
+ }
387
+
388
+ insertReason(row: ReasonRow): void {
389
+ if (this.reasons.some((r) => r.id === row.id)) throw new Error('UNIQUE constraint failed: kit_reasons.id');
390
+ this.reasons.push({ id: row.id, label: row.label, text: row.text, active: row.active });
391
+ this.undoWith(() => {
392
+ this.reasons.length -= 1;
393
+ });
394
+ this.bump();
395
+ }
396
+
397
+ updateReason(id: string, patch: { label?: string; text?: string }): boolean {
398
+ const r = this.reasons.find((x) => x.id === id);
399
+ if (r === undefined) return false;
400
+ const before = { label: r.label, text: r.text };
401
+ const label = patch.label ?? r.label;
402
+ const text = patch.text ?? r.text;
403
+ if (label === before.label && text === before.text) return true;
404
+ r.label = label;
405
+ r.text = text;
406
+ this.undoWith(() => Object.assign(r, before));
407
+ this.bump();
408
+ return true;
409
+ }
410
+
411
+ setReasonActive(id: string, active: boolean): boolean {
412
+ const r = this.reasons.find((x) => x.id === id);
413
+ if (r === undefined) return false;
414
+ if (r.active === active) return true;
415
+ r.active = active;
416
+ this.undoWith(() => {
417
+ r.active = !active;
418
+ });
419
+ this.bump();
420
+ return true;
421
+ }
422
+
423
+ // The editable profile's stored layer (synchronous, see the Store interface). Not a queue change: it does not move the token.
424
+
425
+ loadPolicyLayer(): { layer: PolicyLayer; version: number } | null {
426
+ return this.policy === null ? null : { layer: structuredClone(this.policy.layer), version: this.policy.version };
427
+ }
428
+
429
+ savePolicyLayer(layer: PolicyLayer, expectedVersion: number): number | null {
430
+ const current = this.policy?.version ?? 0;
431
+ if (expectedVersion !== current) return null;
432
+ const prior = this.policy;
433
+ this.policy = { layer: structuredClone(layer), version: current + 1 };
434
+ this.undoWith(() => {
435
+ this.policy = prior;
436
+ });
437
+ return current + 1;
438
+ }
439
+
293
440
  // Staff audit trail (synchronous, see the Store interface).
294
441
 
295
442
  insertAudit(row: AuditRow): void {
@@ -451,6 +598,21 @@ export class MemoryStore implements Store {
451
598
  .map((r) => ({ ...r }));
452
599
  }
453
600
 
601
+ listStrikes(since: number, limit: number): StrikeRow[] {
602
+ const n = Math.min(500, Math.max(1, Math.floor(limit)));
603
+ return this.strikes
604
+ .filter((r) => r.at >= since)
605
+ .sort((a, b) => b.at - a.at || compare(b.id, a.id))
606
+ .slice(0, n)
607
+ .map((r) => ({ ...r }));
608
+ }
609
+
610
+ countStrikesByTerm(since: number): Array<{ termId: string; count: number }> {
611
+ const counts = new Map<string, number>();
612
+ for (const r of this.strikes) if (r.at >= since) counts.set(r.termId, (counts.get(r.termId) ?? 0) + 1);
613
+ return [...counts].sort((a, b) => compare(a[0], b[0])).map(([termId, count]) => ({ termId, count }));
614
+ }
615
+
454
616
  loadAutoChatStarts(): Array<{ subject: SubjectId; startsAt: number }> {
455
617
  const latest = new Map<SubjectId, number>();
456
618
  for (const r of this.sanctions) {
@@ -471,6 +633,8 @@ export class MemoryStore implements Store {
471
633
  if (this.reports.some((r) => r.id === row.id)) throw new Error('UNIQUE constraint failed: kit_reports.id');
472
634
  this.reports.push({
473
635
  ...structuredClone(row),
636
+ reportedReason: row.reportedReason ?? null,
637
+ detailAt: null,
474
638
  badFaith: false,
475
639
  actionedAt: null,
476
640
  actionedBy: null,
@@ -480,6 +644,7 @@ export class MemoryStore implements Store {
480
644
  this.undoWith(() => {
481
645
  this.reports.length -= 1;
482
646
  });
647
+ this.bump();
483
648
  return true;
484
649
  }
485
650
 
@@ -498,11 +663,49 @@ export class MemoryStore implements Store {
498
663
  .map((r) => structuredClone(r));
499
664
  }
500
665
 
666
+ listOpenReports(q: OpenReportQuery): ReportRecord[] {
667
+ const limit = Math.min(200, Math.max(1, Math.floor(q.limit)));
668
+ return this.reports
669
+ .filter((r) => {
670
+ if (r.status !== 'open') return false;
671
+ if (q.category !== undefined && r.category !== q.category) return false;
672
+ if (q.reason !== undefined && (r.reportedReason ?? null) !== q.reason) return false;
673
+ if (q.after === undefined) return true;
674
+ if (r.createdAt !== q.after) return r.createdAt > q.after;
675
+ return q.afterId !== undefined && compare(r.id, q.afterId) > 0;
676
+ })
677
+ .sort((a, b) => a.createdAt - b.createdAt || compare(a.id, b.id))
678
+ .slice(0, limit)
679
+ .map((r) => structuredClone(r));
680
+ }
681
+
682
+ listOpenReportsByPerson(subjects: readonly SubjectId[], limit: number): ReportRecord[] {
683
+ const n = Math.min(200, Math.max(1, Math.floor(limit)));
684
+ const wanted = new Set(subjects);
685
+ return this.reports
686
+ .filter((r) => r.status === 'open' && wanted.has(r.targetSubject))
687
+ .sort((a, b) => b.createdAt - a.createdAt || compare(b.id, a.id))
688
+ .slice(0, n)
689
+ .map((r) => structuredClone(r));
690
+ }
691
+
692
+ reporterTally(reporters: readonly SubjectId[]): ReporterTally {
693
+ const tally: ReporterTally = { open: 0, actioned: 0, dismissed: 0, badFaith: 0 };
694
+ const wanted = new Set(reporters);
695
+ for (const r of this.reports) {
696
+ if (!wanted.has(r.reporterSubject)) continue;
697
+ tally[r.status] += 1;
698
+ if (r.badFaith) tally.badFaith += 1;
699
+ }
700
+ return tally;
701
+ }
702
+
501
703
  listReports(q: ReportListQuery): ReportRecord[] {
502
704
  const limit = Math.min(200, Math.max(1, Math.floor(q.limit)));
503
705
  return this.reports
504
706
  .filter((r) => {
505
707
  if (q.status !== undefined && r.status !== q.status) return false;
708
+ if (q.reason !== undefined && r.reportedReason !== q.reason) return false;
506
709
  if (q.before === undefined) return true;
507
710
  if (r.createdAt !== q.before) return r.createdAt < q.before;
508
711
  return q.beforeId !== undefined && compare(r.id, q.beforeId) < 0;
@@ -512,6 +715,53 @@ export class MemoryStore implements Store {
512
715
  .map((r) => structuredClone(r));
513
716
  }
514
717
 
718
+ loadReporterDecisions(reporters: readonly SubjectId[]): ReporterDecision[] {
719
+ const wanted = new Set(reporters);
720
+ const out: ReporterDecision[] = [];
721
+ // The newest 200 decided reports with a reason, newest first.
722
+ const decided = this.reports
723
+ .filter((r) => wanted.has(r.reporterSubject) && r.status !== 'open' && (r.reportedReason ?? null) !== null)
724
+ .sort((a, b) => b.createdAt - a.createdAt || compare(b.id, a.id))
725
+ .slice(0, 200);
726
+ for (const r of decided) {
727
+ if (r.reportedReason == null || r.status === 'open') continue;
728
+ const groups = new Set<string>();
729
+ for (const d of this.decisions.values()) {
730
+ if (d.reportId !== r.id) continue;
731
+ // A row that cannot be read is a decision with no known actions, never a failure of the call.
732
+ let parsed: { groups?: unknown } | null;
733
+ try {
734
+ parsed = JSON.parse(d.resultJson) as { groups?: unknown } | null;
735
+ } catch {
736
+ parsed = null;
737
+ }
738
+ if (parsed !== null && Array.isArray(parsed.groups)) {
739
+ for (const g of parsed.groups as Array<{ groupId?: unknown } | null>) if (typeof g?.groupId === 'string') groups.add(g.groupId);
740
+ }
741
+ }
742
+ const actions: ReporterDecision['actions'] = [];
743
+ for (const s of this.sanctions) {
744
+ if (!groups.has(s.groupId) || s.targetType !== 'subject') continue;
745
+ actions.push({ subject: s.value, rule: s.rule !== null && /^[1-9][0-9]*$/.test(s.rule) ? Number(s.rule) : 'uncovered' });
746
+ }
747
+ out.push({ reportId: r.id, status: r.status, reason: r.reportedReason, target: r.targetSubject, actions });
748
+ }
749
+ return out;
750
+ }
751
+
752
+ addReportDetail(id: string, detail: { reportedReason: string | null; category: ReportRecord['category']; note: string | null; at: number }): boolean {
753
+ const r = this.reports.find((x) => x.id === id);
754
+ if (r === undefined || r.status !== 'open' || r.detailAt !== null) return false;
755
+ const before = { reportedReason: r.reportedReason, category: r.category, note: r.note, detailAt: r.detailAt };
756
+ r.reportedReason = detail.reportedReason;
757
+ r.category = detail.category;
758
+ r.note = detail.note;
759
+ r.detailAt = detail.at;
760
+ this.undoWith(() => Object.assign(r, before));
761
+ this.bump();
762
+ return true;
763
+ }
764
+
515
765
  closeReport(
516
766
  id: string,
517
767
  status: 'actioned' | 'dismissed',
@@ -539,6 +789,7 @@ export class MemoryStore implements Store {
539
789
  r.modNote = note;
540
790
  r.badFaithEvidence = evidence;
541
791
  this.undoWith(() => Object.assign(r, before));
792
+ this.bump();
542
793
  return true;
543
794
  }
544
795