@stage5/lumine 0.3.71 → 0.3.73
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 +6 -2
- package/lib/commands.js +1 -1
- package/lib/sdk.js +2 -0
- package/package.json +1 -1
- package/sdk/BUILD_SDK_INDEX.md +16 -3
package/lib/admin.js
CHANGED
|
@@ -3173,7 +3173,7 @@ export function parseAdminOperation(options) {
|
|
|
3173
3173
|
// as the website. Check-ins provide evidence; every meetup completion
|
|
3174
3174
|
// waits for Mikey's decision (2026-10-22).
|
|
3175
3175
|
const usage =
|
|
3176
|
-
"Usage: lumine admin meetup list [--status review|active|completed|all] | show <crewId> | review-completion <crewId> --decision approve|reject --fingerprint <review fingerprint> | info <crewId> <userId> --decision ask|accept|ask-again|withdraw [--note <text>] | set-branch <crewId> <userId> --branch <name> [--note <text>] | branches [list|show|approve|reject|merge] | emails [list|send <id
|
|
3176
|
+
"Usage: lumine admin meetup list [--status review|active|completed|all] | show <crewId> | review-completion <crewId> --decision approve|reject --fingerprint <review fingerprint> | info <crewId> <userId> --decision ask|accept|ask-again|withdraw [--note <text>] | set-branch <crewId> <userId> --branch <name> [--note <text>] | branches [list|show|approve|reject|merge] | emails [list|send <id> [--fingerprint <revision>]|discard <id>|review on|off] | friends [status|on|off] | funnel [--days <1-90>] | story ... | announce-checkins [--send] [--as zero|ciel].";
|
|
3177
3177
|
const note = String(options.note || "").trim();
|
|
3178
3178
|
if (note.length > 1000) {
|
|
3179
3179
|
throw cliValidationError("--note must be at most 1000 characters.");
|
|
@@ -3279,7 +3279,9 @@ export function parseAdminOperation(options) {
|
|
|
3279
3279
|
}
|
|
3280
3280
|
if (sub === "send" || sub === "discard") {
|
|
3281
3281
|
const id = parseRequiredInteger(extra, "Email ID", 1);
|
|
3282
|
-
|
|
3282
|
+
const revision = sub === "send" ? String(options.adminFingerprint || "").trim() : "";
|
|
3283
|
+
if (revision && !/^[0-9a-f]{64}$/.test(revision)) throw cliValidationError("Use --fingerprint from the reviewed email in meetup emails list.");
|
|
3284
|
+
return writeOperation("meetup.emails", "POST", `/cli/admin/meetup-quest/emails/${id}/${sub}`, revision ? { revision } : {}, { requiresRun: false });
|
|
3283
3285
|
}
|
|
3284
3286
|
throw cliValidationError("lumine admin meetup emails [list | send <id> | discard <id> | review on|off]");
|
|
3285
3287
|
}
|
|
@@ -6683,6 +6685,8 @@ function printMeetupResult({ operation, data, result }) {
|
|
|
6683
6685
|
console.log(`\n#${d.id} [${d.status}] ${d.kind === "witness" ? `member #${d.childUserId} asks a parent to be the grown-up` : `crew #${d.crewId} ${d.kind === "brief" ? "meetup request" : "reply"}`} -> ${d.to}`);
|
|
6684
6686
|
console.log(` Subject: ${d.subject}`);
|
|
6685
6687
|
console.log(` ${String(d.body).split("\n").join("\n ")}`);
|
|
6688
|
+
if (d.verificationChanged) console.log(" This parent address is now verified. Your edits are preserved; review any old verification request in the message.");
|
|
6689
|
+
if (d.revision) console.log(` Send this reviewed version: lumine admin meetup emails send ${d.id} --fingerprint ${d.revision}`);
|
|
6686
6690
|
}
|
|
6687
6691
|
return;
|
|
6688
6692
|
}
|
package/lib/commands.js
CHANGED
|
@@ -3329,7 +3329,7 @@ export function printHelp() {
|
|
|
3329
3329
|
lumine admin nonogram status | add --file <pictures.json> | retire <key> | restore <key> [--confirm] (private reviewed pictures; changes are dry runs without --confirm)
|
|
3330
3330
|
lumine admin build-plans stuck [--days <1-90>] [--all] | recheck <buildId> [<buildId> ...] [--confirm] (Lumine Build plans stuck on one milestone: runs, Energy vs estimate, gradings, loop-guard state; recheck re-grades the current milestone with today's evaluator, free for the creator, dry run without --confirm)
|
|
3331
3331
|
lumine admin storage list [--status pending|approved|rejected|all] [--cursor <id>] | show <user-id-or-username> | approve <request-id> [--size <500MB|1GB|2GB|n MB>] [--reason <text>] | reject <request-id> [--reason <text>] | grant <user-id-or-username> --size <500MB|1GB|2GB|n MB> [--reason <text>]
|
|
3332
|
-
lumine admin meetup list [--status review|active|completed|all] | show <crewId> | info <crewId> <userId> --decision ask|accept|ask-again|withdraw [--note <text>] | set-branch <crewId> <userId> --branch "<name>" [--note <text>] | branches [list [--status pending|official|rejected|all] | show <id> | approve <id> | reject <id> [--note <text>] | merge <id> --into <officialId>] | emails [list|send <id
|
|
3332
|
+
lumine admin meetup list [--status review|active|completed|all] | show <crewId> | info <crewId> <userId> --decision ask|accept|ask-again|withdraw [--note <text>] | set-branch <crewId> <userId> --branch "<name>" [--note <text>] | branches [list [--status pending|official|rejected|all] | show <id> | approve <id> | reject <id> [--note <text>] | merge <id> --into <officialId>] | emails [list|send <id> [--fingerprint <revision>]|discard <id>|review on|off] | friends [status|on|off] | funnel [--days <1-90>] | announce-checkins [--send] [--as zero|ciel] (Bridge Builder crews and check-ins)
|
|
3333
3333
|
lumine admin meetup story list | show <crewId> | approve <crewId> [--note <text>] [--no-announce] | send-back <crewId> --note <text> | unpublish <crewId> --note <text> (Bridge Builder story pages: publishes only what every tagged member's parent allowed)
|
|
3334
3334
|
lumine admin reward-activity [--date YYYY-MM-DD] [--days <1..31>] [--build <id>] [--json]
|
|
3335
3335
|
lumine admin reward-diagnostics [--build <id> --user <id>] [--days <1..30>] [--cursor <id>] [--json]
|
package/lib/sdk.js
CHANGED
|
@@ -114,6 +114,8 @@ export const SDK_CLI_METHODS = {
|
|
|
114
114
|
"sharedDb.getTopics": { path: "api/shared-db/topics", scopes: ["sharedDb:read"] },
|
|
115
115
|
"sharedDb.createTopic": { path: "api/shared-db/topic", scopes: ["sharedDb:write"], write: true },
|
|
116
116
|
"sharedDb.getEntries": { path: "api/shared-db/entries", scopes: ["sharedDb:read"] },
|
|
117
|
+
"sharedDb.queryEntries": { path: "api/shared-db/entries", scopes: ["sharedDb:read"],
|
|
118
|
+
mapArgs: ({ authorUserId, fields, where, countBy, includeAuthor, ...args }) => ({ ...args, query: { authorUserId, fields, where, countBy, includeAuthor } }) },
|
|
117
119
|
"sharedDb.getEntriesByIds": { path: "api/shared-db/entries/by-ids", scopes: ["sharedDb:read"] },
|
|
118
120
|
"sharedDb.addEntry": { path: "api/shared-db/entry", scopes: ["sharedDb:write"], write: true },
|
|
119
121
|
"sharedDb.addEntries": { path: "api/shared-db/entries/batch", scopes: ["sharedDb:write"], write: true },
|
package/package.json
CHANGED
package/sdk/BUILD_SDK_INDEX.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Build SDK Index
|
|
2
2
|
|
|
3
|
-
Version: 1.
|
|
4
|
-
Updated: 2026-10-
|
|
5
|
-
Generated: 2026-10-
|
|
3
|
+
Version: 1.74.0
|
|
4
|
+
Updated: 2026-10-29
|
|
5
|
+
Generated: 2026-10-28T20:08:43.889Z
|
|
6
6
|
|
|
7
7
|
## Platform rules
|
|
8
8
|
Each rule below is a way an app breaks once it runs inside Twinkle's sandboxed frame, even when the code itself is correct. They outrank every other guideline: follow them in every change, including small ones, and fix any break of them you see in code you touch.
|
|
@@ -1402,6 +1402,19 @@ const result = await Twinkle.characters.chat({ character: 'zero', thinkingMode:
|
|
|
1402
1402
|
- Use limit or pageSize to choose how many entries to fetch per page. Default is 20, max is 100.
|
|
1403
1403
|
- For oldest-first chronological reads, pass order: 'asc' or order: 'oldest'. sort and direction are accepted as aliases.
|
|
1404
1404
|
- Supports cursor-based pagination. Newest-first cursors page toward older entries; oldest-first cursors page toward newer entries.
|
|
1405
|
+
- async queryEntries(topicName, { limit, pageSize, cursor, order, authorUserId, fields, where, countBy, includeAuthor } = {}) | scopes: sharedDb:read
|
|
1406
|
+
- Returns: { entries?, groups?, cursor, hasMore, queryVersion: 1 }
|
|
1407
|
+
- Read selected shared data fields with server-side creator filtering, scalar matching and grouped counts.
|
|
1408
|
+
- Returns the same paginated entries as getEntries, plus queryVersion: 1.
|
|
1409
|
+
- authorUserId filters to one entry creator on the server. It does not change read or write permissions.
|
|
1410
|
+
- fields selects at most 24 top-level data field names; missing selected fields are null. Omit fields for complete data; [] returns only row metadata.
|
|
1411
|
+
- where: { field, equals } filters one top-level data field by exact JSON scalar equality (string, number, boolean or null).
|
|
1412
|
+
- Alternatively where: { field, truthy: true } requires a present JSON value other than null, false, zero or an empty string.
|
|
1413
|
+
- countBy groups matching entries by one top-level data field and returns { groups: [{ value, count }], cursor, hasMore, queryVersion: 1 } instead of entries. This avoids transferring documents just to count comments. Groups page in first-entry order; use the returned cursor with the same query. Per-viewer hidden entries are excluded before counting.
|
|
1414
|
+
- includeAuthor: false skips username/profile-photo enrichment for count/index reads; id, topicId, userId and timestamps remain available.
|
|
1415
|
+
- Field names use letters, digits and underscores, starting with a letter or underscore, at most 64 characters. No SQL or nested paths.
|
|
1416
|
+
- Keep the same filters/fields/order when passing a cursor. Reads retain app/topic boundaries, published guest opt-ins and per-viewer content visibility. Signed-in queries read canonical writer state.
|
|
1417
|
+
- Use metadata lists for browsing and getEntriesByIds only when a member opens a full recording/document.
|
|
1405
1418
|
- async loadMoreEntries(topicName, { limit, pageSize, cursor, order, sort, direction } = {}) | scopes: sharedDb:read
|
|
1406
1419
|
- Returns: { entries: [{ id, topicId, userId, username, profilePicUrl, data, createdAt, updatedAt }], cursor?, hasMore }
|
|
1407
1420
|
- Fetch the next sharedDb page.
|