@go-labs-sg/gosh 1.3.0 → 1.4.0
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 +49 -1
- package/command-manifest.json +85 -0
- package/command-reference.md +72 -0
- package/dist/index.js +50 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -268,7 +268,7 @@ station lists:
|
|
|
268
268
|
|
|
269
269
|
```bash
|
|
270
270
|
gosh event set-gameplay \
|
|
271
|
-
--input '{"eventId":"event-id","progression":"SEQUENTIAL","groupRoutingEnabled":true,"allowMissionSkipping":true}' \
|
|
271
|
+
--input '{"eventId":"event-id","progression":"SEQUENTIAL","groupRoutingEnabled":true,"allowMissionSkipping":true,"allowStationSkipping":false}' \
|
|
272
272
|
--target event-id \
|
|
273
273
|
--allow-state-change
|
|
274
274
|
|
|
@@ -381,6 +381,46 @@ finish time are kept, and a finished station accepts the reopened mission
|
|
|
381
381
|
until it is resolved. Pending submissions must be reviewed first, and a
|
|
382
382
|
reopened mission that still holds earlier points cannot be skipped.
|
|
383
383
|
|
|
384
|
+
#### Skipping a station
|
|
385
|
+
|
|
386
|
+
When the event's `allowStationSkipping` gameplay setting is on, a player who
|
|
387
|
+
can submit for their team can skip their current station. Check-in is not
|
|
388
|
+
required, so a team that cannot pass geolock can still move on:
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
gosh player station skip \
|
|
392
|
+
--input '{"eventId":"event-id","stationId":"station-2"}' \
|
|
393
|
+
--target station-2 \
|
|
394
|
+
--allow-state-change
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
A host with `reviewSubmissions` can skip a team's (`teamId`) or individual
|
|
398
|
+
player's (`eventPlayerId`) current station, or one open mission on it, while
|
|
399
|
+
the event is live. This works whatever the player setting is. Check the route
|
|
400
|
+
first, then pass an optional reason:
|
|
401
|
+
|
|
402
|
+
```bash
|
|
403
|
+
gosh route progress --input '{"eventId":"event-id","teamId":"team-1"}'
|
|
404
|
+
|
|
405
|
+
gosh route skip-station \
|
|
406
|
+
--input '{"eventId":"event-id","teamId":"team-1","stationId":"station-2","reason":"Location closed"}' \
|
|
407
|
+
--target team-1 \
|
|
408
|
+
--allow-state-change
|
|
409
|
+
|
|
410
|
+
gosh route skip-mission \
|
|
411
|
+
--input '{"eventId":"event-id","teamId":"team-1","missionId":"mission-3","reason":"Prop missing"}' \
|
|
412
|
+
--target team-1 \
|
|
413
|
+
--allow-state-change
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
Only the current station can be skipped, so route order stays intact. Its
|
|
417
|
+
open missions score zero, the station completes (a stop nobody started records
|
|
418
|
+
zero time), and the next stop unlocks immediately; skipping the last stop
|
|
419
|
+
finishes the route. A station with a reopened mission that still holds earlier
|
|
420
|
+
points cannot be skipped until it is resubmitted or reviewed. Who skipped and
|
|
421
|
+
why appears in `route progress`, the activity log, and the results export's
|
|
422
|
+
`skips.csv`.
|
|
423
|
+
|
|
384
424
|
When reviewing, pass the submission's `updatedAt` from the review queue as
|
|
385
425
|
`expectedUpdatedAt`. If the team resubmitted after you read it, the review is
|
|
386
426
|
refused with `CONFLICT` instead of scoring the new answer blind:
|
|
@@ -513,6 +553,14 @@ gosh submission watch --input '{"organizationId":"acme","eventId":"event-id"}'
|
|
|
513
553
|
|
|
514
554
|
Global admins can list users, change global roles, and ban or unban accounts under `gosh admin users …`. Banning an account atomically revokes its active browser and CLI sessions.
|
|
515
555
|
|
|
556
|
+
Global admins can read every post-event experience review across organizations under `gosh admin reviews …`. `list` returns newest-first `{ items, pageInfo }` cursor pages (`limit` 1 to 100, default 25; pass `pageInfo.nextCursor` back as `cursor`), `count` returns the total, average rating and 5 to 1 star distribution, `filter-options` lists the organizations and events that have reviews, and `export` returns every matching row (up to 10,000). All four accept the same optional filters: `rating` (1 to 5), `organizationId`, `eventId`, `comment` (`with` or `without`) and `q` (comment, participant or event search):
|
|
557
|
+
|
|
558
|
+
```bash
|
|
559
|
+
gosh admin reviews list --input '{"rating":1,"limit":50}'
|
|
560
|
+
gosh admin reviews count --input '{"comment":"with"}'
|
|
561
|
+
gosh admin reviews export --input '{"organizationId":"org-id"}'
|
|
562
|
+
```
|
|
563
|
+
|
|
516
564
|
## Mutation safety
|
|
517
565
|
|
|
518
566
|
Mutations require `--target` to exactly match an identifier in `--input` (such as an `eventId`, `stationId`, slug, or name), binding the confirmation to the payload. In non-interactive automation, every applicable effect flag is also required:
|
package/command-manifest.json
CHANGED
|
@@ -921,6 +921,15 @@
|
|
|
921
921
|
"requiresAuth": true,
|
|
922
922
|
"summary": "List teams and their current members."
|
|
923
923
|
},
|
|
924
|
+
{
|
|
925
|
+
"effects": [],
|
|
926
|
+
"input": "json",
|
|
927
|
+
"operation": "query",
|
|
928
|
+
"path": ["route", "progress"],
|
|
929
|
+
"procedure": "team.getRouteProgress",
|
|
930
|
+
"requiresAuth": true,
|
|
931
|
+
"summary": "Show a team's (teamId) or individual player's (eventPlayerId) sequential route: stops, mission statuses, and who skipped what and why."
|
|
932
|
+
},
|
|
924
933
|
{
|
|
925
934
|
"effects": [],
|
|
926
935
|
"input": "json",
|
|
@@ -1660,6 +1669,26 @@
|
|
|
1660
1669
|
"name"
|
|
1661
1670
|
]
|
|
1662
1671
|
},
|
|
1672
|
+
{
|
|
1673
|
+
"effects": ["state-change"],
|
|
1674
|
+
"input": "json",
|
|
1675
|
+
"operation": "mutation",
|
|
1676
|
+
"path": ["route", "skip-station"],
|
|
1677
|
+
"procedure": "team.skipStation",
|
|
1678
|
+
"requiresAuth": true,
|
|
1679
|
+
"summary": "Skip a team's (teamId) or individual player's (eventPlayerId) current station on a fixed-order route while the event is live, with an optional reason. Its open missions score zero and the next stop unlocks; works whatever the player skipping setting is.",
|
|
1680
|
+
"targetKeys": ["teamId", "eventPlayerId", "stationId"]
|
|
1681
|
+
},
|
|
1682
|
+
{
|
|
1683
|
+
"effects": ["state-change"],
|
|
1684
|
+
"input": "json",
|
|
1685
|
+
"operation": "mutation",
|
|
1686
|
+
"path": ["route", "skip-mission"],
|
|
1687
|
+
"procedure": "team.skipMission",
|
|
1688
|
+
"requiresAuth": true,
|
|
1689
|
+
"summary": "Skip one open mission at a team's (teamId) or individual player's (eventPlayerId) current station for zero points, with an optional reason. Completes the station when it was the last open mission.",
|
|
1690
|
+
"targetKeys": ["teamId", "eventPlayerId", "missionId"]
|
|
1691
|
+
},
|
|
1663
1692
|
{
|
|
1664
1693
|
"effects": ["state-change"],
|
|
1665
1694
|
"input": "json",
|
|
@@ -1906,6 +1935,16 @@
|
|
|
1906
1935
|
"name"
|
|
1907
1936
|
]
|
|
1908
1937
|
},
|
|
1938
|
+
{
|
|
1939
|
+
"effects": ["state-change"],
|
|
1940
|
+
"input": "json",
|
|
1941
|
+
"operation": "mutation",
|
|
1942
|
+
"path": ["event", "update-survey"],
|
|
1943
|
+
"procedure": "event.updateSurveySettings",
|
|
1944
|
+
"requiresAuth": true,
|
|
1945
|
+
"summary": "Set the player survey: built-in, external link, or off, plus its copy and Google review prompt.",
|
|
1946
|
+
"targetKeys": ["eventId"]
|
|
1947
|
+
},
|
|
1909
1948
|
{
|
|
1910
1949
|
"effects": ["state-change"],
|
|
1911
1950
|
"input": "json",
|
|
@@ -2451,6 +2490,16 @@
|
|
|
2451
2490
|
"summary": "Permanently skip one unresolved mission for zero points when enabled; retain other points and elapsed station time.",
|
|
2452
2491
|
"targetKeys": ["missionId"]
|
|
2453
2492
|
},
|
|
2493
|
+
{
|
|
2494
|
+
"effects": ["state-change"],
|
|
2495
|
+
"input": "json",
|
|
2496
|
+
"operation": "mutation",
|
|
2497
|
+
"path": ["player", "station", "skip"],
|
|
2498
|
+
"procedure": "event.skipStation",
|
|
2499
|
+
"requiresAuth": true,
|
|
2500
|
+
"summary": "Skip your current sequential station for zero points when the event allows station skipping. No check-in is needed; its missions cannot be played later.",
|
|
2501
|
+
"targetKeys": ["stationId"]
|
|
2502
|
+
},
|
|
2454
2503
|
{
|
|
2455
2504
|
"effects": ["state-change"],
|
|
2456
2505
|
"input": "json",
|
|
@@ -3120,6 +3169,42 @@
|
|
|
3120
3169
|
"name"
|
|
3121
3170
|
]
|
|
3122
3171
|
},
|
|
3172
|
+
{
|
|
3173
|
+
"effects": [],
|
|
3174
|
+
"input": "json",
|
|
3175
|
+
"operation": "query",
|
|
3176
|
+
"path": ["admin", "reviews", "list"],
|
|
3177
|
+
"procedure": "review.listAdmin",
|
|
3178
|
+
"requiresAuth": true,
|
|
3179
|
+
"summary": "List experience reviews across all events as a global admin. Input: optional rating, organizationId, eventId, comment (with|without), q, plus limit, cursor and direction; returns { items, pageInfo }."
|
|
3180
|
+
},
|
|
3181
|
+
{
|
|
3182
|
+
"effects": [],
|
|
3183
|
+
"input": "json",
|
|
3184
|
+
"operation": "query",
|
|
3185
|
+
"path": ["admin", "reviews", "count"],
|
|
3186
|
+
"procedure": "review.getAdminSummary",
|
|
3187
|
+
"requiresAuth": true,
|
|
3188
|
+
"summary": "Count experience reviews for the given filters, with average rating and 5 to 1 star distribution."
|
|
3189
|
+
},
|
|
3190
|
+
{
|
|
3191
|
+
"effects": [],
|
|
3192
|
+
"input": "none",
|
|
3193
|
+
"operation": "query",
|
|
3194
|
+
"path": ["admin", "reviews", "filter-options"],
|
|
3195
|
+
"procedure": "review.listAdminFilterOptions",
|
|
3196
|
+
"requiresAuth": true,
|
|
3197
|
+
"summary": "List organizations and events that have experience reviews."
|
|
3198
|
+
},
|
|
3199
|
+
{
|
|
3200
|
+
"effects": [],
|
|
3201
|
+
"input": "json",
|
|
3202
|
+
"operation": "query",
|
|
3203
|
+
"path": ["admin", "reviews", "export"],
|
|
3204
|
+
"procedure": "review.exportAdmin",
|
|
3205
|
+
"requiresAuth": true,
|
|
3206
|
+
"summary": "Export every experience review matching the filters as rows (capped at 10,000)."
|
|
3207
|
+
},
|
|
3123
3208
|
{
|
|
3124
3209
|
"path": ["assets", "requirements"],
|
|
3125
3210
|
"operation": "local",
|
package/command-reference.md
CHANGED
|
@@ -370,6 +370,14 @@ List teams and their current members.
|
|
|
370
370
|
- Input: `--input '<json>'` required
|
|
371
371
|
- Effects: read-only
|
|
372
372
|
|
|
373
|
+
## `gosh route progress`
|
|
374
|
+
|
|
375
|
+
Show a team's (teamId) or individual player's (eventPlayerId) sequential route: stops, mission statuses, and who skipped what and why.
|
|
376
|
+
|
|
377
|
+
- Authentication: browser-authenticated CLI session required
|
|
378
|
+
- Input: `--input '<json>'` required
|
|
379
|
+
- Effects: read-only
|
|
380
|
+
|
|
373
381
|
## `gosh team station-routes`
|
|
374
382
|
|
|
375
383
|
List each team's linked stations and team-specific route order.
|
|
@@ -650,6 +658,22 @@ Review a mission submission.
|
|
|
650
658
|
- Input: `--input '<json>'` required
|
|
651
659
|
- Effects: state-change
|
|
652
660
|
|
|
661
|
+
## `gosh route skip-station`
|
|
662
|
+
|
|
663
|
+
Skip a team's (teamId) or individual player's (eventPlayerId) current station on a fixed-order route while the event is live, with an optional reason. Its open missions score zero and the next stop unlocks; works whatever the player skipping setting is.
|
|
664
|
+
|
|
665
|
+
- Authentication: browser-authenticated CLI session required
|
|
666
|
+
- Input: `--input '<json>'` required
|
|
667
|
+
- Effects: state-change
|
|
668
|
+
|
|
669
|
+
## `gosh route skip-mission`
|
|
670
|
+
|
|
671
|
+
Skip one open mission at a team's (teamId) or individual player's (eventPlayerId) current station for zero points, with an optional reason. Completes the station when it was the last open mission.
|
|
672
|
+
|
|
673
|
+
- Authentication: browser-authenticated CLI session required
|
|
674
|
+
- Input: `--input '<json>'` required
|
|
675
|
+
- Effects: state-change
|
|
676
|
+
|
|
653
677
|
## `gosh mission reopen`
|
|
654
678
|
|
|
655
679
|
Reopen a submitted or skipped mission for one team (teamId) or player (eventPlayerId) on a fixed-order route. Earlier points count until they resubmit; then only the new submission counts. Finish times are kept.
|
|
@@ -786,6 +810,14 @@ Update event branding.
|
|
|
786
810
|
- Input: `--input '<json>'` required
|
|
787
811
|
- Effects: state-change
|
|
788
812
|
|
|
813
|
+
## `gosh event update-survey`
|
|
814
|
+
|
|
815
|
+
Set the player survey: built-in, external link, or off, plus its copy and Google review prompt.
|
|
816
|
+
|
|
817
|
+
- Authentication: browser-authenticated CLI session required
|
|
818
|
+
- Input: `--input '<json>'` required
|
|
819
|
+
- Effects: state-change
|
|
820
|
+
|
|
789
821
|
## `gosh station update-availability`
|
|
790
822
|
|
|
791
823
|
Update station availability.
|
|
@@ -1002,6 +1034,14 @@ Permanently skip one unresolved mission for zero points when enabled; retain oth
|
|
|
1002
1034
|
- Input: `--input '<json>'` required
|
|
1003
1035
|
- Effects: state-change
|
|
1004
1036
|
|
|
1037
|
+
## `gosh player station skip`
|
|
1038
|
+
|
|
1039
|
+
Skip your current sequential station for zero points when the event allows station skipping. No check-in is needed; its missions cannot be played later.
|
|
1040
|
+
|
|
1041
|
+
- Authentication: browser-authenticated CLI session required
|
|
1042
|
+
- Input: `--input '<json>'` required
|
|
1043
|
+
- Effects: state-change
|
|
1044
|
+
|
|
1005
1045
|
## `gosh player mission submit`
|
|
1006
1046
|
|
|
1007
1047
|
Submit a mission response and return revealMessage, including already-completed submissions.
|
|
@@ -1244,6 +1284,38 @@ Unban a user.
|
|
|
1244
1284
|
- Input: `--input '<json>'` required
|
|
1245
1285
|
- Effects: state-change
|
|
1246
1286
|
|
|
1287
|
+
## `gosh admin reviews list`
|
|
1288
|
+
|
|
1289
|
+
List experience reviews across all events as a global admin. Input: optional rating, organizationId, eventId, comment (with|without), q, plus limit, cursor and direction; returns { items, pageInfo }.
|
|
1290
|
+
|
|
1291
|
+
- Authentication: browser-authenticated CLI session required
|
|
1292
|
+
- Input: `--input '<json>'` required
|
|
1293
|
+
- Effects: read-only
|
|
1294
|
+
|
|
1295
|
+
## `gosh admin reviews count`
|
|
1296
|
+
|
|
1297
|
+
Count experience reviews for the given filters, with average rating and 5 to 1 star distribution.
|
|
1298
|
+
|
|
1299
|
+
- Authentication: browser-authenticated CLI session required
|
|
1300
|
+
- Input: `--input '<json>'` required
|
|
1301
|
+
- Effects: read-only
|
|
1302
|
+
|
|
1303
|
+
## `gosh admin reviews filter-options`
|
|
1304
|
+
|
|
1305
|
+
List organizations and events that have experience reviews.
|
|
1306
|
+
|
|
1307
|
+
- Authentication: browser-authenticated CLI session required
|
|
1308
|
+
- Input: none
|
|
1309
|
+
- Effects: read-only
|
|
1310
|
+
|
|
1311
|
+
## `gosh admin reviews export`
|
|
1312
|
+
|
|
1313
|
+
Export every experience review matching the filters as rows (capped at 10,000).
|
|
1314
|
+
|
|
1315
|
+
- Authentication: browser-authenticated CLI session required
|
|
1316
|
+
- Input: `--input '<json>'` required
|
|
1317
|
+
- Effects: read-only
|
|
1318
|
+
|
|
1247
1319
|
## `gosh assets requirements`
|
|
1248
1320
|
|
|
1249
1321
|
Show upload limits and separate artwork recommendations without login or network access.
|
package/dist/index.js
CHANGED
|
@@ -7452,6 +7452,10 @@ var typedOperations = {
|
|
|
7452
7452
|
kind: "query",
|
|
7453
7453
|
invoke: (client, input) => client.team.list.query(input)
|
|
7454
7454
|
},
|
|
7455
|
+
"team.getRouteProgress": {
|
|
7456
|
+
kind: "query",
|
|
7457
|
+
invoke: (client, input) => client.team.getRouteProgress.query(input)
|
|
7458
|
+
},
|
|
7455
7459
|
"team.getStationRoutes": {
|
|
7456
7460
|
kind: "query",
|
|
7457
7461
|
invoke: (client, input) => client.team.getStationRoutes.query(input)
|
|
@@ -7592,6 +7596,14 @@ var typedOperations = {
|
|
|
7592
7596
|
kind: "mutation",
|
|
7593
7597
|
invoke: (client, input) => client.event.reviewSubmission.mutate(input)
|
|
7594
7598
|
},
|
|
7599
|
+
"team.skipStation": {
|
|
7600
|
+
kind: "mutation",
|
|
7601
|
+
invoke: (client, input) => client.team.skipStation.mutate(input)
|
|
7602
|
+
},
|
|
7603
|
+
"team.skipMission": {
|
|
7604
|
+
kind: "mutation",
|
|
7605
|
+
invoke: (client, input) => client.team.skipMission.mutate(input)
|
|
7606
|
+
},
|
|
7595
7607
|
"event.reopenMission": {
|
|
7596
7608
|
kind: "mutation",
|
|
7597
7609
|
invoke: (client, input) => client.event.reopenMission.mutate(input)
|
|
@@ -7660,6 +7672,10 @@ var typedOperations = {
|
|
|
7660
7672
|
kind: "mutation",
|
|
7661
7673
|
invoke: (client, input) => client.event.updateBranding.mutate(input)
|
|
7662
7674
|
},
|
|
7675
|
+
"event.updateSurveySettings": {
|
|
7676
|
+
kind: "mutation",
|
|
7677
|
+
invoke: (client, input) => client.event.updateSurveySettings.mutate(input)
|
|
7678
|
+
},
|
|
7663
7679
|
"event.updateStationAvailability": {
|
|
7664
7680
|
kind: "mutation",
|
|
7665
7681
|
invoke: (client, input) => client.event.updateStationAvailability.mutate(input)
|
|
@@ -7768,6 +7784,10 @@ var typedOperations = {
|
|
|
7768
7784
|
kind: "mutation",
|
|
7769
7785
|
invoke: (client, input) => client.event.skipMission.mutate(input)
|
|
7770
7786
|
},
|
|
7787
|
+
"event.skipStation": {
|
|
7788
|
+
kind: "mutation",
|
|
7789
|
+
invoke: (client, input) => client.event.skipStation.mutate(input)
|
|
7790
|
+
},
|
|
7771
7791
|
"event.submitMission": {
|
|
7772
7792
|
kind: "mutation",
|
|
7773
7793
|
invoke: (client, input) => client.event.submitMission.mutate(input)
|
|
@@ -7895,6 +7915,22 @@ var typedOperations = {
|
|
|
7895
7915
|
"user.unban": {
|
|
7896
7916
|
kind: "mutation",
|
|
7897
7917
|
invoke: (client, input) => client.user.unban.mutate(input)
|
|
7918
|
+
},
|
|
7919
|
+
"review.listAdmin": {
|
|
7920
|
+
kind: "query",
|
|
7921
|
+
invoke: (client, input) => client.review.listAdmin.query(input)
|
|
7922
|
+
},
|
|
7923
|
+
"review.getAdminSummary": {
|
|
7924
|
+
kind: "query",
|
|
7925
|
+
invoke: (client, input) => client.review.getAdminSummary.query(input)
|
|
7926
|
+
},
|
|
7927
|
+
"review.listAdminFilterOptions": {
|
|
7928
|
+
kind: "query",
|
|
7929
|
+
invoke: (client, input) => client.review.listAdminFilterOptions.query(input)
|
|
7930
|
+
},
|
|
7931
|
+
"review.exportAdmin": {
|
|
7932
|
+
kind: "query",
|
|
7933
|
+
invoke: (client, input) => client.review.exportAdmin.query(input)
|
|
7898
7934
|
}
|
|
7899
7935
|
};
|
|
7900
7936
|
|
|
@@ -7950,6 +7986,7 @@ var defaultMutationTargetKeys = [
|
|
|
7950
7986
|
var mutationTargetKeys = {
|
|
7951
7987
|
"team.updateRoutingGroupRelease": ["groupId", "eventId"],
|
|
7952
7988
|
"team.setGameplaySettings": ["eventId"],
|
|
7989
|
+
"event.updateSurveySettings": ["eventId"],
|
|
7953
7990
|
"team.createRoutingGroup": ["eventId"],
|
|
7954
7991
|
"team.renameRoutingGroup": ["groupId"],
|
|
7955
7992
|
"team.deleteRoutingGroup": ["groupId"],
|
|
@@ -7959,6 +7996,9 @@ var mutationTargetKeys = {
|
|
|
7959
7996
|
"team.resolveRsvpCheckInReview": ["linkId"],
|
|
7960
7997
|
"event.startStation": ["stationId"],
|
|
7961
7998
|
"event.skipMission": ["missionId"],
|
|
7999
|
+
"event.skipStation": ["stationId"],
|
|
8000
|
+
"team.skipStation": ["teamId", "eventPlayerId", "stationId"],
|
|
8001
|
+
"team.skipMission": ["teamId", "eventPlayerId", "missionId"],
|
|
7962
8002
|
"event.reopenMission": ["teamId", "eventPlayerId", "missionId"],
|
|
7963
8003
|
"event.create": ["organizationId", "name"],
|
|
7964
8004
|
"event.createFromTemplate": ["organizationId", "templateId"],
|
|
@@ -8056,6 +8096,7 @@ var commands = [
|
|
|
8056
8096
|
mutation(["mission", "archive"], "event.archiveMission", "Archive a mission.", ["state-change", "delete"]),
|
|
8057
8097
|
mutation(["mission", "reorder"], "event.reorderMissions", "Reorder missions within a station.", ["state-change"]),
|
|
8058
8098
|
query(["team", "list"], "team.list", "List teams and their current members."),
|
|
8099
|
+
query(["route", "progress"], "team.getRouteProgress", "Show a team's (teamId) or individual player's (eventPlayerId) sequential route: stops, mission statuses, and who skipped what and why."),
|
|
8059
8100
|
query(["team", "station-routes"], "team.getStationRoutes", "List each team's linked stations and team-specific route order."),
|
|
8060
8101
|
mutation(["team", "create"], "team.create", "Create a team.", [
|
|
8061
8102
|
"state-change"
|
|
@@ -8098,6 +8139,8 @@ var commands = [
|
|
|
8098
8139
|
mutation(["reward", "update"], "event.updateReward", "Update an event reward.", ["state-change"]),
|
|
8099
8140
|
mutation(["score", "adjust"], "event.createScoreAdjustment", "Create a manual score adjustment.", ["state-change"]),
|
|
8100
8141
|
mutation(["submission", "review"], "event.reviewSubmission", "Review a mission submission.", ["state-change"]),
|
|
8142
|
+
mutation(["route", "skip-station"], "team.skipStation", "Skip a team's (teamId) or individual player's (eventPlayerId) current station on a fixed-order route while the event is live, with an optional reason. Its open missions score zero and the next stop unlocks; works whatever the player skipping setting is.", ["state-change"]),
|
|
8143
|
+
mutation(["route", "skip-mission"], "team.skipMission", "Skip one open mission at a team's (teamId) or individual player's (eventPlayerId) current station for zero points, with an optional reason. Completes the station when it was the last open mission.", ["state-change"]),
|
|
8101
8144
|
mutation(["mission", "reopen"], "event.reopenMission", "Reopen a submitted or skipped mission for one team (teamId) or player (eventPlayerId) on a fixed-order route. Earlier points count until they resubmit; then only the new submission counts. Finish times are kept.", ["state-change"]),
|
|
8102
8145
|
mutation(["results-share", "regenerate"], "event.regenerateResultsPortalShare", "Create a new results portal share token.", ["state-change"]),
|
|
8103
8146
|
mutation(["results-share", "revoke"], "event.revokeResultsPortalShare", "Revoke the current results portal share token.", ["state-change", "delete"]),
|
|
@@ -8115,6 +8158,7 @@ var commands = [
|
|
|
8115
8158
|
query(["results-share", "get"], "event.getResultsPortalShare", "Get the current results portal share."),
|
|
8116
8159
|
mutation(["event", "update-access"], "event.updateAccess", "Update event access rules.", ["state-change"]),
|
|
8117
8160
|
mutation(["event", "update-branding"], "event.updateBranding", "Update event branding.", ["state-change"]),
|
|
8161
|
+
mutation(["event", "update-survey"], "event.updateSurveySettings", "Set the player survey: built-in, external link, or off, plus its copy and Google review prompt.", ["state-change"]),
|
|
8118
8162
|
mutation(["station", "update-availability"], "event.updateStationAvailability", "Update station availability.", ["state-change"]),
|
|
8119
8163
|
mutation(["station", "update-image"], "event.updateStationImage", "Update a station image.", ["state-change"]),
|
|
8120
8164
|
mutation(["station", "update-location"], "event.updateStationLocation", "Update station location and geofence settings.", ["state-change"]),
|
|
@@ -8144,6 +8188,7 @@ var commands = [
|
|
|
8144
8188
|
mutation(["player", "station-qr-check-in"], "event.createStationQrCheckInProof", "Check in to a station with its scanned QR or manual code.", ["state-change"]),
|
|
8145
8189
|
mutation(["player", "station", "start"], "event.startStation", "Start the current sequential station's shared mission timer and reveal its missions; required check-in still applies.", ["state-change"]),
|
|
8146
8190
|
mutation(["player", "mission", "skip"], "event.skipMission", "Permanently skip one unresolved mission for zero points when enabled; retain other points and elapsed station time.", ["state-change"]),
|
|
8191
|
+
mutation(["player", "station", "skip"], "event.skipStation", "Skip your current sequential station for zero points when the event allows station skipping. No check-in is needed; its missions cannot be played later.", ["state-change"]),
|
|
8147
8192
|
mutation(["player", "mission", "submit"], "event.submitMission", "Submit a mission response and return revealMessage, including already-completed submissions.", ["state-change"]),
|
|
8148
8193
|
query(["public", "event-login"], "event.getPublicLoginDetails", "Get public event login details.", { requiresAuth: false }),
|
|
8149
8194
|
query(["public", "results"], "event.getResultsPortal", "Get a shared public results portal.", { requiresAuth: false }),
|
|
@@ -8175,7 +8220,11 @@ var commands = [
|
|
|
8175
8220
|
mutation(["admin", "users", "ban"], "user.ban", "Ban a user and revoke their sessions and API keys.", ["state-change", "delete"]),
|
|
8176
8221
|
mutation(["admin", "users", "unban"], "user.unban", "Unban a user.", [
|
|
8177
8222
|
"state-change"
|
|
8178
|
-
])
|
|
8223
|
+
]),
|
|
8224
|
+
query(["admin", "reviews", "list"], "review.listAdmin", "List experience reviews across all events as a global admin. Input: optional rating, organizationId, eventId, comment (with|without), q, plus limit, cursor and direction; returns { items, pageInfo }."),
|
|
8225
|
+
query(["admin", "reviews", "count"], "review.getAdminSummary", "Count experience reviews for the given filters, with average rating and 5 to 1 star distribution."),
|
|
8226
|
+
query(["admin", "reviews", "filter-options"], "review.listAdminFilterOptions", "List organizations and events that have experience reviews.", { input: "none" }),
|
|
8227
|
+
query(["admin", "reviews", "export"], "review.exportAdmin", "Export every experience review matching the filters as rows (capped at 10,000).")
|
|
8179
8228
|
];
|
|
8180
8229
|
var commandManifest = commands.map((command) => ({
|
|
8181
8230
|
effects: command.effects,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@go-labs-sg/gosh",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "GOSH CLI for organizers and AI agents — manage organizations, events, teams, stations, missions, templates, and live operations through the GOSH API.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|