@go-labs-sg/gosh 0.6.1 → 0.8.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 CHANGED
@@ -65,11 +65,14 @@ gosh help event list
65
65
  gosh health status
66
66
  gosh organization list
67
67
  gosh event list --input '{"organizationId":"acme"}'
68
+ gosh event list-page --input '{"organizationId":"acme","page":1,"pageSize":25,"search":"race","status":"LIVE"}'
68
69
  gosh event get --input '{"organizationId":"acme","eventId":"event-id"}'
69
70
  ```
70
71
 
71
72
  Commands use `--input '<json>'` for the exact validated tRPC input object. This preserves the GOSH API's typed validation without maintaining a second set of lossy CLI flags. See [command-reference.md](./command-reference.md) or import `@go-labs-sg/gosh/command-manifest` for the generated catalogue.
72
73
 
74
+ `gosh event list-page` returns `{ items, page, pageSize, pageCount, totalCount }`. It defaults to page 1 with 25 results, accepts page sizes from 1 to 100, and supports server-side `search` and `status` filters. Archived events are excluded unless an explicit status is supplied. Request subsequent pages explicitly; the CLI does not automatically fetch every page. The existing `gosh event list` command and its array response remain unchanged.
75
+
73
76
  The command registry covers every callable GOSH tRPC procedure: organizer and global-admin operations, organization invitations and membership, player workflows, public results/login procedures, uploads, and realtime subscriptions. The compile-time registry test fails whenever a new API procedure is added without a CLI command.
74
77
 
75
78
  ### Templates and organization scope
@@ -94,6 +97,26 @@ gosh event create-from-template \
94
97
  --allow-state-change
95
98
  ```
96
99
 
100
+ ### Organization provisioning
101
+
102
+ Only global administrators can provision an organization. `gosh organization create`
103
+ requires `name`, `slug`, and `ownerEmail`; it creates the organization with a
104
+ pending first-owner invitation and emails that address. The provisioner does not
105
+ become a member or owner. The invited person must sign in with that email and
106
+ accept the invitation before they can manage the organization.
107
+
108
+ ```bash
109
+ gosh organization create \
110
+ --input '{"name":"Acme Events","slug":"acme-events","ownerEmail":"owner@example.com"}' \
111
+ --target acme-events \
112
+ --allow-state-change \
113
+ --allow-email \
114
+ --allow-external-write
115
+ ```
116
+
117
+ The response includes the pending owner invitation and its delivery status; do
118
+ not treat the provisioner as the customer owner.
119
+
97
120
  ### Shared stations and team routes
98
121
 
99
122
  Create each station once for an event. In a team event, link the same station to
@@ -53,6 +53,15 @@
53
53
  "requiresAuth": true,
54
54
  "summary": "List active events in an organization."
55
55
  },
56
+ {
57
+ "effects": [],
58
+ "input": "json",
59
+ "operation": "query",
60
+ "path": ["event", "list-page"],
61
+ "procedure": "event.listPage",
62
+ "requiresAuth": true,
63
+ "summary": "List a filtered page of organization events using page, pageSize, search, and status."
64
+ },
56
65
  {
57
66
  "effects": [],
58
67
  "input": "json",
@@ -2434,13 +2443,13 @@
2434
2443
  "summary": "Watch submission review queue changes as newline-delimited JSON."
2435
2444
  },
2436
2445
  {
2437
- "effects": ["state-change"],
2446
+ "effects": ["state-change", "email", "external-write"],
2438
2447
  "input": "json",
2439
2448
  "operation": "mutation",
2440
2449
  "path": ["organization", "create"],
2441
2450
  "procedure": "organization.create",
2442
2451
  "requiresAuth": true,
2443
- "summary": "Create an organization.",
2452
+ "summary": "Provision an organization and email its pending first owner invitation.",
2444
2453
  "targetKeys": ["slug", "name"]
2445
2454
  },
2446
2455
  {
@@ -50,6 +50,14 @@ List active events in an organization.
50
50
  - Input: `--input '<json>'` required
51
51
  - Effects: read-only
52
52
 
53
+ ## `gosh event list-page`
54
+
55
+ List a filtered page of organization events using page, pageSize, search, and status.
56
+
57
+ - Authentication: browser-authenticated CLI session required
58
+ - Input: `--input '<json>'` required
59
+ - Effects: read-only
60
+
53
61
  ## `gosh event get`
54
62
 
55
63
  Get an event by ID or slug.
@@ -932,11 +940,11 @@ Watch submission review queue changes as newline-delimited JSON.
932
940
 
933
941
  ## `gosh organization create`
934
942
 
935
- Create an organization.
943
+ Provision an organization and email its pending first owner invitation.
936
944
 
937
945
  - Authentication: browser-authenticated CLI session required
938
946
  - Input: `--input '<json>'` required
939
- - Effects: state-change
947
+ - Effects: state-change, email, external-write
940
948
 
941
949
  ## `gosh organization update`
942
950
 
package/dist/index.js CHANGED
@@ -19912,6 +19912,10 @@ var typedOperations = {
19912
19912
  kind: "query",
19913
19913
  invoke: (client, input2) => client.event.list.query(input2)
19914
19914
  },
19915
+ "event.listPage": {
19916
+ kind: "query",
19917
+ invoke: (client, input2) => client.event.listPage.query(input2)
19918
+ },
19915
19919
  "event.getById": {
19916
19920
  kind: "query",
19917
19921
  invoke: (client, input2) => client.event.getById.query(input2)
@@ -20534,6 +20538,7 @@ var commands = [
20534
20538
  query(["organization", "get"], "organization.getById", "Get one organization by ID or slug."),
20535
20539
  query(["organization", "members"], "organization.listMembers", "List an organization's members and pending invitations."),
20536
20540
  query(["event", "list"], "event.list", "List active events in an organization."),
20541
+ query(["event", "list-page"], "event.listPage", "List a filtered page of organization events using page, pageSize, search, and status."),
20537
20542
  query(["event", "get"], "event.getById", "Get an event by ID or slug."),
20538
20543
  query(["event", "setup"], "event.getAdminSetup", "Get the organizer setup view for an event."),
20539
20544
  query(["event", "participants"], "event.getAdminParticipants", "Get the organizer participant view for an event."),
@@ -20661,7 +20666,7 @@ var commands = [
20661
20666
  mutation(["player", "mission", "upload-abort"], "event.abortMissionMediaMultipartUpload", "Abort a low-level multipart mission upload.", ["state-change", "delete", "external-write"]),
20662
20667
  subscription(["player", "watch"], "event.onPlayerEventChanged", "Watch player event changes as newline-delimited JSON."),
20663
20668
  subscription(["submission", "watch"], "event.onSubmissionReviewQueueChanged", "Watch submission review queue changes as newline-delimited JSON."),
20664
- mutation(["organization", "create"], "organization.create", "Create an organization.", ["state-change"]),
20669
+ mutation(["organization", "create"], "organization.create", "Provision an organization and email its pending first owner invitation.", ["state-change", "email", "external-write"]),
20665
20670
  mutation(["organization", "update"], "organization.update", "Update an organization.", ["state-change"]),
20666
20671
  mutation(["organization", "slug-check"], "organization.checkSlug", "Check whether an organization slug is available.", []),
20667
20672
  query(["organization", "access-check"], "organization.checkOrganizationAccess", "Check access to an organization."),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@go-labs-sg/gosh",
3
- "version": "0.6.1",
3
+ "version": "0.8.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",