@go-labs-sg/gosh 1.5.0 → 1.6.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 +43 -0
- package/command-manifest.json +38 -0
- package/command-reference.md +32 -0
- package/dist/index.js +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -372,6 +372,49 @@ groups to read back release values and editability, and use
|
|
|
372
372
|
for the five most recent actor/before/after changes; the existing event activity
|
|
373
373
|
timeline provides the full audit history.
|
|
374
374
|
|
|
375
|
+
### Staggered team starts within a group
|
|
376
|
+
|
|
377
|
+
Teams sharing a route can start at different times. A team's own `releaseAt`
|
|
378
|
+
replaces the group's time (earlier or later); with none, the team uses the
|
|
379
|
+
group's time, so existing events are unchanged. A held group still holds every
|
|
380
|
+
team, and a team hold holds one team inside a released group. The server
|
|
381
|
+
enforces each team's effective time on every gameplay call.
|
|
382
|
+
|
|
383
|
+
Preview a stagger first. It writes nothing and lists each team's before/after
|
|
384
|
+
time plus any blockers the apply would refuse with:
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
gosh routing-group stagger-preview \
|
|
388
|
+
--input '{"eventId":"event-id","groupId":"group-a","mode":"STAGGER","firstReleaseAt":"2030-01-01T13:40:00+08:00","intervalMinutes":5,"teamIds":["team-1","team-2","team-3"]}'
|
|
389
|
+
gosh routing-group stagger \
|
|
390
|
+
--input '{"eventId":"event-id","groupId":"group-a","mode":"STAGGER","firstReleaseAt":"2030-01-01T13:40:00+08:00","intervalMinutes":5,"teamIds":["team-1","team-2","team-3"]}' \
|
|
391
|
+
--target group-a \
|
|
392
|
+
--allow-state-change
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
`teamIds` order is start order: `team-1` 13:40, `team-2` 13:45, `team-3` 13:50.
|
|
396
|
+
Teams left out keep their current time. Use `"mode":"SHIFT","shiftMinutes":10`
|
|
397
|
+
to delay every unstarted scheduled team by 10 minutes (negative moves earlier,
|
|
398
|
+
never into the past), or `"mode":"CLEAR"` to drop team times so teams use the
|
|
399
|
+
group time again. Apply runs in one transaction, so either every team changes
|
|
400
|
+
or none do. Started teams are never rescheduled.
|
|
401
|
+
|
|
402
|
+
One team at a time, including while LIVE:
|
|
403
|
+
|
|
404
|
+
```bash
|
|
405
|
+
gosh team release \
|
|
406
|
+
--input '{"eventId":"event-id","teamId":"team-2","action":"HOLD"}' \
|
|
407
|
+
--target team-2 \
|
|
408
|
+
--allow-state-change
|
|
409
|
+
gosh team release-history --input '{"eventId":"event-id","teamId":"team-2"}'
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
Actions are SCHEDULE (future `releaseAt` with offset), CLEAR (use the group
|
|
413
|
+
time), HOLD, RELEASE_HOLD (keep the team time) and RELEASE_NOW (start this team
|
|
414
|
+
now; refused while the group is held). After a team starts, only HOLD and
|
|
415
|
+
RELEASE_HOLD are accepted. Every change is audited with actor and before/after
|
|
416
|
+
values.
|
|
417
|
+
|
|
375
418
|
The server evaluates deadlines without cron. Release never starts a timer or
|
|
376
419
|
bypasses LIVE status, availability, check-in or captain permissions. Any team in
|
|
377
420
|
a group beginning play locks that group's schedule; emergency HOLD/resume stays
|
package/command-manifest.json
CHANGED
|
@@ -1201,6 +1201,44 @@
|
|
|
1201
1201
|
"summary": "Schedule (future releaseAt ISO timestamp with offset), CLEAR schedule, HOLD, RELEASE_SCHEDULED_HOLD (keep schedule), or RELEASE_NOW for a routing group. After a group starts, only HOLD and RELEASE_SCHEDULED_HOLD are accepted. Requires launchEvent permission.",
|
|
1202
1202
|
"targetKeys": ["groupId", "eventId"]
|
|
1203
1203
|
},
|
|
1204
|
+
{
|
|
1205
|
+
"effects": [],
|
|
1206
|
+
"input": "json",
|
|
1207
|
+
"operation": "query",
|
|
1208
|
+
"path": ["routing-group", "stagger-preview"],
|
|
1209
|
+
"procedure": "team.previewRoutingGroupStagger",
|
|
1210
|
+
"requiresAuth": true,
|
|
1211
|
+
"summary": "Dry run: show each team's before/after start time for a routing-group STAGGER (firstReleaseAt + intervalMinutes in teamIds order), SHIFT (shiftMinutes, unstarted scheduled teams) or CLEAR (back to the group time). Writes nothing; returns blockers apply would refuse with."
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
"effects": ["state-change"],
|
|
1215
|
+
"input": "json",
|
|
1216
|
+
"operation": "mutation",
|
|
1217
|
+
"path": ["routing-group", "stagger"],
|
|
1218
|
+
"procedure": "team.applyRoutingGroupStagger",
|
|
1219
|
+
"requiresAuth": true,
|
|
1220
|
+
"summary": "Apply the same STAGGER, SHIFT or CLEAR input as stagger-preview in one transaction (all teams or none). Started teams are never rescheduled. Requires launchEvent permission; allowed while LIVE.",
|
|
1221
|
+
"targetKeys": ["groupId", "eventId"]
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
"effects": ["state-change"],
|
|
1225
|
+
"input": "json",
|
|
1226
|
+
"operation": "mutation",
|
|
1227
|
+
"path": ["team", "release"],
|
|
1228
|
+
"procedure": "team.updateTeamRelease",
|
|
1229
|
+
"requiresAuth": true,
|
|
1230
|
+
"summary": "Set one team's start inside its routing group: SCHEDULE (future releaseAt ISO timestamp with offset), CLEAR (use the group time), HOLD, RELEASE_HOLD, or RELEASE_NOW. A held group still holds every team. After a team starts, only HOLD and RELEASE_HOLD are accepted. Requires launchEvent permission.",
|
|
1231
|
+
"targetKeys": ["teamId", "eventId"]
|
|
1232
|
+
},
|
|
1233
|
+
{
|
|
1234
|
+
"effects": [],
|
|
1235
|
+
"input": "json",
|
|
1236
|
+
"operation": "query",
|
|
1237
|
+
"path": ["team", "release-history"],
|
|
1238
|
+
"procedure": "team.listTeamReleaseHistory",
|
|
1239
|
+
"requiresAuth": true,
|
|
1240
|
+
"summary": "Show a team's five most recent start-time changes with actor, action and before/after UTC values."
|
|
1241
|
+
},
|
|
1204
1242
|
{
|
|
1205
1243
|
"effects": ["state-change"],
|
|
1206
1244
|
"input": "json",
|
package/command-reference.md
CHANGED
|
@@ -474,6 +474,38 @@ Schedule (future releaseAt ISO timestamp with offset), CLEAR schedule, HOLD, REL
|
|
|
474
474
|
- Input: `--input '<json>'` required
|
|
475
475
|
- Effects: state-change
|
|
476
476
|
|
|
477
|
+
## `gosh routing-group stagger-preview`
|
|
478
|
+
|
|
479
|
+
Dry run: show each team's before/after start time for a routing-group STAGGER (firstReleaseAt + intervalMinutes in teamIds order), SHIFT (shiftMinutes, unstarted scheduled teams) or CLEAR (back to the group time). Writes nothing; returns blockers apply would refuse with.
|
|
480
|
+
|
|
481
|
+
- Authentication: browser-authenticated CLI session required
|
|
482
|
+
- Input: `--input '<json>'` required
|
|
483
|
+
- Effects: read-only
|
|
484
|
+
|
|
485
|
+
## `gosh routing-group stagger`
|
|
486
|
+
|
|
487
|
+
Apply the same STAGGER, SHIFT or CLEAR input as stagger-preview in one transaction (all teams or none). Started teams are never rescheduled. Requires launchEvent permission; allowed while LIVE.
|
|
488
|
+
|
|
489
|
+
- Authentication: browser-authenticated CLI session required
|
|
490
|
+
- Input: `--input '<json>'` required
|
|
491
|
+
- Effects: state-change
|
|
492
|
+
|
|
493
|
+
## `gosh team release`
|
|
494
|
+
|
|
495
|
+
Set one team's start inside its routing group: SCHEDULE (future releaseAt ISO timestamp with offset), CLEAR (use the group time), HOLD, RELEASE_HOLD, or RELEASE_NOW. A held group still holds every team. After a team starts, only HOLD and RELEASE_HOLD are accepted. Requires launchEvent permission.
|
|
496
|
+
|
|
497
|
+
- Authentication: browser-authenticated CLI session required
|
|
498
|
+
- Input: `--input '<json>'` required
|
|
499
|
+
- Effects: state-change
|
|
500
|
+
|
|
501
|
+
## `gosh team release-history`
|
|
502
|
+
|
|
503
|
+
Show a team's five most recent start-time changes with actor, action and before/after UTC values.
|
|
504
|
+
|
|
505
|
+
- Authentication: browser-authenticated CLI session required
|
|
506
|
+
- Input: `--input '<json>'` required
|
|
507
|
+
- Effects: read-only
|
|
508
|
+
|
|
477
509
|
## `gosh routing-group create`
|
|
478
510
|
|
|
479
511
|
Create a routing group within an event before play starts.
|
package/dist/index.js
CHANGED
|
@@ -7504,6 +7504,22 @@ var typedOperations = {
|
|
|
7504
7504
|
kind: "mutation",
|
|
7505
7505
|
invoke: (client, input) => client.team.updateRoutingGroupRelease.mutate(input)
|
|
7506
7506
|
},
|
|
7507
|
+
"team.previewRoutingGroupStagger": {
|
|
7508
|
+
kind: "query",
|
|
7509
|
+
invoke: (client, input) => client.team.previewRoutingGroupStagger.query(input)
|
|
7510
|
+
},
|
|
7511
|
+
"team.applyRoutingGroupStagger": {
|
|
7512
|
+
kind: "mutation",
|
|
7513
|
+
invoke: (client, input) => client.team.applyRoutingGroupStagger.mutate(input)
|
|
7514
|
+
},
|
|
7515
|
+
"team.updateTeamRelease": {
|
|
7516
|
+
kind: "mutation",
|
|
7517
|
+
invoke: (client, input) => client.team.updateTeamRelease.mutate(input)
|
|
7518
|
+
},
|
|
7519
|
+
"team.listTeamReleaseHistory": {
|
|
7520
|
+
kind: "query",
|
|
7521
|
+
invoke: (client, input) => client.team.listTeamReleaseHistory.query(input)
|
|
7522
|
+
},
|
|
7507
7523
|
"team.createRoutingGroup": {
|
|
7508
7524
|
kind: "mutation",
|
|
7509
7525
|
invoke: (client, input) => client.team.createRoutingGroup.mutate(input)
|
|
@@ -7989,6 +8005,8 @@ var defaultMutationTargetKeys = [
|
|
|
7989
8005
|
];
|
|
7990
8006
|
var mutationTargetKeys = {
|
|
7991
8007
|
"team.updateRoutingGroupRelease": ["groupId", "eventId"],
|
|
8008
|
+
"team.updateTeamRelease": ["teamId", "eventId"],
|
|
8009
|
+
"team.applyRoutingGroupStagger": ["groupId", "eventId"],
|
|
7992
8010
|
"team.setGameplaySettings": ["eventId"],
|
|
7993
8011
|
"event.updateSurveySettings": ["eventId"],
|
|
7994
8012
|
"team.createRoutingGroup": ["eventId"],
|
|
@@ -8117,6 +8135,10 @@ var commands = [
|
|
|
8117
8135
|
query(["routing-group", "list"], "team.listRoutingGroups", "List an event's routing groups, ordered stations, and assigned teams."),
|
|
8118
8136
|
query(["routing-group", "release-history"], "team.listRoutingGroupReleaseHistory", "Show a routing group's five most recent release changes with actor, action and before/after UTC values."),
|
|
8119
8137
|
mutation(["routing-group", "release"], "team.updateRoutingGroupRelease", "Schedule (future releaseAt ISO timestamp with offset), CLEAR schedule, HOLD, RELEASE_SCHEDULED_HOLD (keep schedule), or RELEASE_NOW for a routing group. After a group starts, only HOLD and RELEASE_SCHEDULED_HOLD are accepted. Requires launchEvent permission.", ["state-change"]),
|
|
8138
|
+
query(["routing-group", "stagger-preview"], "team.previewRoutingGroupStagger", "Dry run: show each team's before/after start time for a routing-group STAGGER (firstReleaseAt + intervalMinutes in teamIds order), SHIFT (shiftMinutes, unstarted scheduled teams) or CLEAR (back to the group time). Writes nothing; returns blockers apply would refuse with."),
|
|
8139
|
+
mutation(["routing-group", "stagger"], "team.applyRoutingGroupStagger", "Apply the same STAGGER, SHIFT or CLEAR input as stagger-preview in one transaction (all teams or none). Started teams are never rescheduled. Requires launchEvent permission; allowed while LIVE.", ["state-change"]),
|
|
8140
|
+
mutation(["team", "release"], "team.updateTeamRelease", "Set one team's start inside its routing group: SCHEDULE (future releaseAt ISO timestamp with offset), CLEAR (use the group time), HOLD, RELEASE_HOLD, or RELEASE_NOW. A held group still holds every team. After a team starts, only HOLD and RELEASE_HOLD are accepted. Requires launchEvent permission.", ["state-change"]),
|
|
8141
|
+
query(["team", "release-history"], "team.listTeamReleaseHistory", "Show a team's five most recent start-time changes with actor, action and before/after UTC values."),
|
|
8120
8142
|
mutation(["routing-group", "create"], "team.createRoutingGroup", "Create a routing group within an event before play starts.", ["state-change"]),
|
|
8121
8143
|
mutation(["routing-group", "rename"], "team.renameRoutingGroup", "Rename an event's routing group before play starts.", ["state-change"]),
|
|
8122
8144
|
mutation(["routing-group", "delete"], "team.deleteRoutingGroup", "Delete an unassigned routing group before play starts.", ["state-change", "delete"]),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@go-labs-sg/gosh",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.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",
|