@stage5/lumine 0.2.47 → 0.2.48

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/lib/admin.js CHANGED
@@ -1151,6 +1151,11 @@ export function parseAdminOperation(options) {
1151
1151
  }
1152
1152
 
1153
1153
  if (namespace === "bot-output" && !action) {
1154
+ if (options.adminDays && options.adminCursor) {
1155
+ throw cliValidationError(
1156
+ "Continue a bot-output --cursor without changing its --days window.",
1157
+ );
1158
+ }
1154
1159
  if (options.adminDays) {
1155
1160
  const days = Number(options.adminDays);
1156
1161
  if (!Number.isInteger(days) || days < 1 || days > 30) {
@@ -1159,7 +1164,10 @@ export function parseAdminOperation(options) {
1159
1164
  }
1160
1165
  return readOperation(
1161
1166
  "bot.output",
1162
- withQuery("/cli/admin/bot-output", { days: options.adminDays }),
1167
+ withQuery("/cli/admin/bot-output", {
1168
+ days: options.adminDays,
1169
+ cursor: options.adminCursor,
1170
+ }),
1163
1171
  );
1164
1172
  }
1165
1173
 
package/lib/commands.js CHANGED
@@ -2767,7 +2767,7 @@ export function printHelp() {
2767
2767
  lumine admin comment post --draft-id <id> [--json]
2768
2768
  lumine admin comment edit <comment-id> --file <comment.md> [--json]
2769
2769
  lumine admin brief [--days <1..30>] [--json]
2770
- lumine admin bot-output [--days <1..30>] [--json]
2770
+ lumine admin bot-output [--days <1..30>|--cursor <cursor>] [--json]
2771
2771
  lumine admin announcement post --file <announcement.md> [--json]
2772
2772
  lumine admin chat send <user-id|username> --file <message.md> [--json]
2773
2773
  lumine admin news claim [--date YYYY-MM-DD] [--output <claim.json>] [--scaffold <editorial.json>] [--json]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stage5/lumine",
3
- "version": "0.2.47",
3
+ "version": "0.2.48",
4
4
  "description": "Command line tools for launching Lumine builds on Twinkle.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -802,11 +802,13 @@ type BuildCandidates = Success<{
802
802
  }>;
803
803
  ```
804
804
 
805
- Subject cursors freeze a primary-key high-water mark and traverse descending
806
- IDs. Bounded recommendation cursors freeze both the feed-ID high-water mark and
807
- the server timestamp, then traverse the indexed `(timeStamp, id)` order; this
808
- also catches a Daily Reflection whose old feed row moved forward when it was
809
- reshared. Explicit legacy scans retain the descending primary-key walk. A page
805
+ Subject cursors freeze a primary-key high-water mark plus the server snapshot
806
+ timestamp and traverse descending IDs; bounded scans keep creation timestamps
807
+ inside that confirmed interval. Bounded recommendation cursors freeze both the
808
+ feed-ID high-water mark and the server timestamp, then traverse the indexed
809
+ `(timeStamp, id)` order; this also catches a Daily Reflection whose old feed
810
+ row moved forward when it was reshared. Explicit legacy scans retain the
811
+ descending primary-key walk. A page
810
812
  can be empty while `hasMore` remains true; continue until `exhausted`. `--all`
811
813
  does that automatically and writes a private checkpoint after every
812
814
  server-confirmed page; `--resume` continues only when the checkpoint belongs to
@@ -1449,6 +1451,7 @@ type NewsSubmit = NewsStatus; // "success"; newspaper includes revisionNumber
1449
1451
  ```bash
1450
1452
  lumine admin bot-output --json
1451
1453
  lumine admin bot-output --days 3 --json
1454
+ lumine admin bot-output --cursor '<pagination.nextCursor>' --json
1452
1455
  ```
1453
1456
 
1454
1457
  **Every run reviews what Zero and Ciel themselves said since the last run.**
@@ -1463,11 +1466,19 @@ Reflections — and it surfaced only because the kid showed Mikey).
1463
1466
  (`--days 1..30` overrides): `chatMessages` (every stored Zero/Ciel chat and
1464
1467
  reflection reply, with full text and recipient metadata when its best-effort
1465
1468
  prompt audit exists) and `comments`
1466
- (every public bot comment/reply). Truncation flags mark anything beyond 400
1467
- rows per source — retry with a narrower `--days` window, and do not complete
1468
- the run while either flag remains true. Run it right after the
1469
- brief, and **read every row** — the tool deliberately does no filtering,
1470
- scoring, or keyword matching, because the judgment is the reviewing agent's.
1469
+ (every public bot comment/reply). Individual utterances are returned in full;
1470
+ the API never clips their tails. The first response freezes a canonical
1471
+ high-water mark for both sources. Truncation flags mark another page beyond
1472
+ the 400-row or bounded-response-size budget; continue with the exact
1473
+ `pagination.nextCursor` until
1474
+ `pagination.exhausted` is true and both flags are false. A cursor retains the
1475
+ original time window and cannot be combined with `--days`. Do not complete the
1476
+ run while either flag remains true. The default window deliberately overlaps
1477
+ from the previous completed run's start, so output created after its review
1478
+ snapshot but before completion is reviewed again instead of being lost. Run it
1479
+ right after the brief, and **read every row** — the tool deliberately does no
1480
+ filtering, scoring, or keyword matching, because the judgment is the reviewing
1481
+ agent's.
1471
1482
 
1472
1483
  **Purpose and privacy boundary:** this audits how Twinkle's bots treated
1473
1484
  members; it is not thought-policing or a moderation queue for members' private