grokbot-control 0.0.0-stage → 0.1.3

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.
Files changed (122) hide show
  1. package/README.md +160 -2
  2. package/dist/auth/lock.d.ts +14 -0
  3. package/dist/auth/lock.js +71 -0
  4. package/dist/auth/provider.d.ts +89 -0
  5. package/dist/auth/provider.js +884 -0
  6. package/dist/auth/store.d.ts +25 -0
  7. package/dist/auth/store.js +106 -0
  8. package/dist/auth/types.d.ts +138 -0
  9. package/dist/auth/types.js +1 -0
  10. package/dist/cli/config.d.ts +26 -0
  11. package/dist/cli/config.js +98 -0
  12. package/dist/cli/help.d.ts +1 -0
  13. package/dist/cli/help.js +83 -0
  14. package/dist/cli/io.d.ts +6 -0
  15. package/dist/cli/io.js +61 -0
  16. package/dist/cli/main.d.ts +2 -0
  17. package/dist/cli/main.js +275 -0
  18. package/dist/cli/sync.d.ts +4 -0
  19. package/dist/cli/sync.js +105 -0
  20. package/dist/connect/client.d.ts +32 -0
  21. package/dist/connect/client.js +257 -0
  22. package/dist/dto/result.d.ts +33 -0
  23. package/dist/dto/result.js +29 -0
  24. package/dist/dto/types.d.ts +63 -0
  25. package/dist/dto/types.js +2 -0
  26. package/dist/errors.d.ts +31 -0
  27. package/dist/errors.js +64 -0
  28. package/dist/index.d.ts +13 -0
  29. package/dist/index.js +11 -0
  30. package/dist/mcp/main.d.ts +2 -0
  31. package/dist/mcp/main.js +82 -0
  32. package/dist/mcp/tools.d.ts +24 -0
  33. package/dist/mcp/tools.js +408 -0
  34. package/dist/mcp/zod-json.d.ts +2 -0
  35. package/dist/mcp/zod-json.js +4 -0
  36. package/dist/ops/auth.d.ts +48 -0
  37. package/dist/ops/auth.js +89 -0
  38. package/dist/ops/bot.d.ts +52 -0
  39. package/dist/ops/bot.js +211 -0
  40. package/dist/ops/limits.d.ts +10 -0
  41. package/dist/ops/limits.js +31 -0
  42. package/dist/ops/map.d.ts +7 -0
  43. package/dist/ops/map.js +57 -0
  44. package/dist/ops/message.d.ts +33 -0
  45. package/dist/ops/message.js +118 -0
  46. package/dist/ops/plane.d.ts +26 -0
  47. package/dist/ops/plane.js +33 -0
  48. package/dist/ops/progress.d.ts +34 -0
  49. package/dist/ops/progress.js +92 -0
  50. package/dist/ops/session.d.ts +13 -0
  51. package/dist/ops/session.js +34 -0
  52. package/dist/ops/sidebar.d.ts +70 -0
  53. package/dist/ops/sidebar.js +205 -0
  54. package/dist/sync/attachments.d.ts +76 -0
  55. package/dist/sync/attachments.js +274 -0
  56. package/dist/sync/core.d.ts +92 -0
  57. package/dist/sync/core.js +1027 -0
  58. package/dist/sync/decode.d.ts +83 -0
  59. package/dist/sync/decode.js +229 -0
  60. package/dist/sync/download-policy.d.ts +3 -0
  61. package/dist/sync/download-policy.js +103 -0
  62. package/dist/sync/fs.d.ts +24 -0
  63. package/dist/sync/fs.js +252 -0
  64. package/dist/sync/hydrate.d.ts +43 -0
  65. package/dist/sync/hydrate.js +472 -0
  66. package/dist/sync/render.d.ts +5 -0
  67. package/dist/sync/render.js +100 -0
  68. package/dist/testing/mock-persist.d.ts +3 -0
  69. package/dist/testing/mock-persist.js +45 -0
  70. package/dist/testing/mock-transport.d.ts +18 -0
  71. package/dist/testing/mock-transport.js +202 -0
  72. package/docs/acceptance.md +19 -0
  73. package/docs/architecture.md +128 -0
  74. package/docs/auth-lock.md +87 -0
  75. package/docs/implementation-plan.md +14 -0
  76. package/docs/implementation-status.md +92 -0
  77. package/docs/proto-drift.md +9 -0
  78. package/docs/protocol/README.md +34 -0
  79. package/docs/protocol/attachment-pagination-0.79.3.md +32 -0
  80. package/docs/protocol/auth-flow.md +51 -0
  81. package/docs/protocol/baseline-manifest.md +72 -0
  82. package/docs/protocol/baselines/full-schema-diff-0.78.4-to-0.79.2.txt +239 -0
  83. package/docs/protocol/baselines/full-schema-diff-0.78.4-to-0.79.3.txt +240 -0
  84. package/docs/protocol/baselines/full-schema-diff-0.79.2-to-0.79.3.txt +23 -0
  85. package/docs/protocol/baselines/schema-0.79.3/README.md +7 -0
  86. package/docs/protocol/baselines/schema-0.79.3/agent.v1.proto +5184 -0
  87. package/docs/protocol/baselines/schema-0.79.3/aiserver.v1.proto +18182 -0
  88. package/docs/protocol/baselines/schema-0.79.3/aiserver.v1_2.proto +54 -0
  89. package/docs/protocol/baselines/schema-0.79.3/anyrun.v1.proto +37 -0
  90. package/docs/protocol/baselines/schema-0.79.3/internapi.v1.proto +35 -0
  91. package/docs/protocol/baselines/schema-0.79.3/snapshot.json.gz +0 -0
  92. package/docs/protocol/baselines/schema-0.79.3/svc_aiserver.v1.AgentStoreService.proto +34 -0
  93. package/docs/protocol/baselines/schema-0.79.3/svc_aiserver.v1.AiService.proto +17 -0
  94. package/docs/protocol/baselines/schema-0.79.3/svc_aiserver.v1.AnalyticsService.proto +17 -0
  95. package/docs/protocol/baselines/schema-0.79.3/svc_aiserver.v1.BackgroundComposerService.proto +19 -0
  96. package/docs/protocol/baselines/schema-0.79.3/svc_aiserver.v1.DashboardService.proto +101 -0
  97. package/docs/protocol/baselines/schema-0.79.3/svc_aiserver.v1.GrokBotService.proto +473 -0
  98. package/docs/protocol/baselines/schema-0.79.3/svc_aiserver.v1.SandBoxService.proto +64 -0
  99. package/docs/protocol/baselines/used-surface-0.78.4.json +3694 -0
  100. package/docs/protocol/baselines/used-surface-0.79.2.json +3835 -0
  101. package/docs/protocol/baselines/used-surface-0.79.3.json +3835 -0
  102. package/docs/protocol/baselines/used-surface-diff-0.78.4-to-0.79.2.md +34 -0
  103. package/docs/protocol/baselines/used-surface-diff-0.78.4-to-0.79.3.md +33 -0
  104. package/docs/protocol/compat-matrix.md +20 -0
  105. package/docs/protocol/static-restore.md +64 -0
  106. package/docs/protocol/surface-map.md +39 -0
  107. package/docs/protocol/transcript-body-0.79.3.md +98 -0
  108. package/docs/protocol/update-runbook.md +30 -0
  109. package/docs/protocol-map.md +106 -0
  110. package/docs/references.md +55 -0
  111. package/docs/requirements.md +26 -0
  112. package/docs/review.md +36 -0
  113. package/docs/sync-format.md +98 -0
  114. package/package.json +60 -4
  115. package/vendor/proto-gen/NOTICE.md +23 -0
  116. package/vendor/proto-gen/agent.v1_pb.js +9503 -0
  117. package/vendor/proto-gen/aiserver.v1_2_pb.js +105 -0
  118. package/vendor/proto-gen/aiserver.v1_pb.js +33163 -0
  119. package/vendor/proto-gen/anyrun.v1_pb.js +64 -0
  120. package/vendor/proto-gen/internapi.v1_pb.js +60 -0
  121. package/vendor/proto-gen/package.json +10 -0
  122. package/vendor/proto-gen/svc_aiserver.v1.GrokBotService_connect.js +4193 -0
@@ -0,0 +1,51 @@
1
+ # Auth flow (independent Cursor browser login)
2
+
3
+ Implementation: `src/auth/provider.ts`, `src/auth/store.ts`, `src/ops/auth.ts`. Contract table and CLI/MCP
4
+ commands: [../protocol-map.md#auth-independent-cursor-browser-login](../protocol-map.md). This page records
5
+ **where the evidence lives** so it can be re-found in a new build.
6
+
7
+ | Step | Behaviour | Stable anchor (search the extracted bundle) | 0.79.2 location (A=main-app.cjs) | Level |
8
+ |---|---|---|---|---|
9
+ | Challenge | verifier = base64url(32 random bytes); challenge = base64url(sha256(verifier)); uuid | `randomBytes(32)` next to `"/loginDeepControl"` | fn `Rdn` (prettified A:38644) | S, O |
10
+ | Login URL | `{website}/loginDeepControl?challenge&uuid&mode=login&redirectTarget=<t>[&supportsSelectedTeamLogin=true]`; website default `https://cursor.com` | `"/loginDeepControl"`, `"redirectTarget"` | `Rdn`; library default target `cli` (A:38845) | S, O, **L** (`cli`, 2026-11-07) |
11
+ | Poll | `GET {api}/auth/poll?uuid=&verifier=`; 404 = pending; 1 s×1.2^i ≤ 10 s; ≤ 150 tries; 3 consecutive non-404 → stop | `` `${n}/auth/poll` `` | fns `Aze`, `xdn`, `Odn` | S, O, **L** |
12
+ | Policy denial | 403 `{error:"sign_in_policy_violation"}` | `sign_in_policy_violation` | constant `Nh` | S, O |
13
+ | Result | `{accessToken, refreshToken}`; xAI identity `{xaiAccessToken, …}` → unsupported here | `xaiAccessToken` | fns `Cdn`, `mze` | S, O, **L** (cursor kind) |
14
+ | Refresh | `POST new URL("/oauth/token", backend)` JSON `{client_id, grant_type:"refresh_token", refresh_token}`; response `{access_token?, refresh_token?, shouldLogout?, error?}`; refresh 300 s before JWT `exp` | `"/oauth/token"` | method `runRefreshAccessToken`; schema `zWe` | S, O (not L) |
15
+ | client_id | App picks a **public** id per backend host (dev vs prod) | look near `"/oauth/token"` → `authClientIdentityFor` → selector in main-core | main-core selector (C:35866-35869) | S |
16
+ | API-key exchange | `POST /auth/exchange_user_api_key` (not implemented here) | `/auth/exchange_user_api_key` | fn `Pdn` | S |
17
+
18
+ Boundaries:
19
+ - **client_id is not embedded** in this repo; refresh requires `GBT_OAUTH_CLIENT_ID`. Which public id a third-party
20
+ tool should use is a policy decision for the user, not something to copy blindly from the bundle.
21
+ - 0.79.2 main-app.cjs also contains a **second login implementation** (anchor `loginPollUrl`, `startLogin()` with a
22
+ `"delivered"` result, near offset ~1.14 MB). Not analysed; check it first on the next version bump.
23
+ - Device policy header `x-cursor-mdm-signin-policy` and App client headers are not sent/forged.
24
+ - App credential storage (`sand-secrets.json` under Electron userData) is documented only so it is NOT reused.
25
+
26
+
27
+ ## Token auto-refresh hardening (t47u)
28
+
29
+ State machine (minimal, App-aligned):
30
+
31
+ 1. **Provenance**: stored credentials bind `kind`, `login_kind`, `credential_source`, backend, `refresh_endpoint`,
32
+ optional `client_id` / issuer / account subject / `session_id` / `revision` / expiry. `client_id` comes from
33
+ `GBT_OAUTH_CLIENT_ID` or a login-persisted binding — never hardcoded, never guessed from JWT. Legacy files
34
+ without binding require explicit config (and optional `GBT_AUTH_CONFIRM_MIGRATE=1`).
35
+ 2. **getAccessToken**: missing/illegal exp, within 5 min of exp, or `force` → refresh; else return. In-process
36
+ singleflight + cross-process credential lock; re-read under lock; reuse peer refresh.
37
+ 3. **Refresh POST**: fixed HTTPS `{backend}/oauth/token`, `redirect:error`, 20s deadline, schema requires
38
+ non-empty `access_token`; absent `refresh_token` keeps old. Atomic save only if session/account/revision
39
+ unchanged (CAS).
40
+ 4. **Failures**: network/timeout/5xx/429 keep creds + per-session cooldown; caller deadline does not abort the
41
+ IdP exchange (background writeback; `rpc_dispatched=unknown`). Fallback when old token still valid (also for
42
+ unconfigured/client_mismatch/malformed/redirect — not only `retryable`). `shouldLogout`/policy: rescue newer
43
+ pair under lock, else conditional clear — never fallback revoked token; `invalid_grant` after an ambiguous
44
+ timeout keeps creds. New access JWT `sub` must match expected account subject or the rotation is refused.
45
+ 5. **logout/login/save** share `withCredentialLock` with refresh; native advisory-lock ownership is OS-managed (Linux OFD / macOS flock / Windows LockFileEx; see ../auth-lock.md); never stale-break/unlink lock files.
46
+ 6. **CLI/MCP**: `auth refresh` vs `--force` / `force:true`; whoami offline; AuthOps returns non-secret metadata;
47
+ MCP `auth_refresh` excluded from READONLY.
48
+ 7. **RPC 401**: pass the rejected bearer into force refresh; if disk already rotated, adopt without another
49
+ network refresh. Write RPCs never auto-replayed; read-only unary whitelist may refresh+retry once.
50
+ Pre-RPC failures annotate `rpc_dispatched=false`.
51
+ 8. **staticTokenProvider**: never auto-refresh / no disk refresh; expired → re-provide/login.
@@ -0,0 +1,72 @@
1
+ # Baseline manifest
2
+
3
+ ## Schema baseline used by `vendor/proto-gen` (what the code is compiled against) — **0.79.3**
4
+
5
+ `vendor/proto-gen` is **本仓库从App恢复生成** (regenerated in this repo from the App; not a byte copy of upstream).
6
+
7
+ **正式协议源目录 = [`proto/`](../../proto/)** (current App 0.79.3 `.proto`). The frozen copy under `baselines/schema-0.79.3/` must stay byte-identical (`cmp`).
8
+
9
+ | Item | Value | Level |
10
+ |---|---|---|
11
+ | Release feed | `https://api2.cursor.sh/updates/api/download/stable/linux-x64/sand`, opened 2026-11-07 with `curl`, no login → `version` 0.79.3, `commitSha` `473941287261c3efa92c6b2a0bf7e1caad1a2ef2` | S |
12
+ | Package URL | `https://downloads.cursor.com/grokbot/stable/473941287261c3efa92c6b2a0bf7e1caad1a2ef2/linux/x64/grok-bot_0.79.3_amd64.deb` (HTTP 200, Last-Modified 2026-11-07 07:20:22 Asia/Singapore) | S |
13
+ | deb | 112699168 bytes, sha256 `eee0d637cd68becd2202f765d1302443d4096c52eb632c2177ef0ded29e7168d` (locally computed; no publisher signature verified). `dpkg-deb`: Package grok-bot, Version 0.79.3, amd64 | S |
14
+ | `app.asar` sha256 | `5e13b57664c39a36a84d75dcfcd94f7321a38beab18fa417d1df322e5b2fabe9` | S |
15
+ | `dist/electron-main/proto.cjs` | 1534590 bytes, sha256 `929f17d21f4646c745a9fc4c4a43b55ff686288b5637dc310587471a20f12f8a` | S |
16
+ | `dist/electron-main/main-app.cjs` | 3503781 bytes, sha256 `d54cc236e295d9bb8ee850769b6fceb0079036e4dd117d7f487d35124a268209` | S |
17
+ | `dist/electron-main/main-core.cjs` | 1160950 bytes, sha256 `910cc6bf1145a05efb01185d315e800e28d6242bfef01cae6e945e6aa908e34d` | S |
18
+ | App `package.json` | version 0.79.3, `@bufbuild/protobuf` 1.10.1, `@connectrpc/connect` ^1.6.1 | S |
19
+ | Extraction | upstream `extract_proto.py` @ grokbot-proto `49fd8ce` (sha256 `ab3ec2012ade9527387e772b36445bc97a506e42b6a4179e5e1bc5343ca52301`): 2923 messages, 387 enums, 7 services, 662 RPCs; unresolved 0, relocated 0, backward cross-file edges 0 | S |
20
+ | snapshot.json | sha256 `ab22284058282cd8fd861dbdd08a0fbf7cf6de6c2978f4b69beeaed7d5aeed37` (archived gzipped: `baselines/schema-0.79.3/snapshot.json.gz`, sha256 `eaecc638…4212`) | S |
21
+ | Descriptor set | `grpc_tools.protoc` (grpcio-tools 1.85.1 / libprotoc 35.1 / Python protobuf 7.36.2): 834442 bytes, sha256 `ab4e09d428dd87a6c2c4aea422f0e515375bf1138a5790bd4beb8c1b701c293f` (not committed) | O |
22
+ | Codegen | `@bufbuild/protoc-gen-es` 1.10.1, `@connectrpc/protoc-gen-connect-es` 1.6.1, `target=js`, Node v24.22.1 | O |
23
+ | Pipeline reproducibility | same toolchain on upstream 0.78.4 `.proto` → the previous 6 vendor files byte-identical and `desc.pb` identical | O |
24
+ | Static consistency | `tools/protocol/verify_generated.mjs vendor/proto-gen <snapshot>`: 2923 messages, 387 enums, 464 GrokBotService RPCs match; 2923/2923 binary+JSON round-trips; 0 errors. Negative control (0.78.4 code vs 0.79.3 snapshot) fails as expected | O |
25
+ | App-side wire cross-check | **not run**: upstream `compare.mjs`/`cross-wire.mjs` `require()` the App bundle, which this project does not execute | — |
26
+
27
+ | Vendored file | sha256 (0.79.3) | vs 0.78.4 |
28
+ |---|---|---|
29
+ | agent.v1_pb.js | `62ea215374df3e66578923a969cfcf044ba5d324369f48fab6cb4a50c521316c` | changed |
30
+ | aiserver.v1_pb.js | `a4aa38429919eeef419fe54b8f21b3b68c11c3de881558ee81e9a37206e2eefc` | changed |
31
+ | aiserver.v1_2_pb.js | `ac248083e869d3690c736102320544514a2e951f77981aeda3f8206ef88891af` | same |
32
+ | anyrun.v1_pb.js | `3d753b7a260ab3926ef22b14109db0161f7721f9062b0d876f10b4f2b6d64d83` | same |
33
+ | internapi.v1_pb.js | `6bad66a292c08afd74be5c222e635a148000c81234ec214eae9161d1f4b1ca1b` | same |
34
+ | svc_aiserver.v1.GrokBotService_connect.js | `88228cd0b039c8260290e4f53477454b2fa0353ec39ec5754620239144314f72` | changed |
35
+
36
+ First-class sources: `proto/*.proto` (+ `proto/README.md`, `proto/NOTICE.md`).
37
+ Archived freeze: `baselines/schema-0.79.3/*.proto` + `snapshot.json.gz`, `used-surface-0.79.3.json`,
38
+ `used-surface-diff-0.78.4-to-0.79.3.md`, `full-schema-diff-0.78.4-to-0.79.3.txt`, `full-schema-diff-0.79.2-to-0.79.3.txt`.
39
+ Installer, `app.asar` and bundle files are **not** committed.
40
+
41
+ ## Previous vendor baseline (0.78.4, kept for comparison)
42
+
43
+ | Item | Value |
44
+ |---|---|
45
+ | Upstream | https://github.com/younglark/grokbot-proto @ `49fd8ce62136f72d268a04249f1748e0055d3d2d`, App 0.78.4 (macOS), 2736 msgs / 349 enums / 607 RPCs |
46
+ | Vendor file sha256 | agent `e6f109fe…8baf3`, aiserver `5ca35dc5…f8f33`, aiserver_2 `ac248083…891af`, anyrun `3d753b7a…d64d83`, internapi `6bad66a2…ca1b`, GrokBotService `61daae0c…e679a4` |
47
+ | Used-surface baseline | `baselines/used-surface-0.78.4.json` |
48
+
49
+ ## Earlier App build: 0.79.2 (auth analysis; schema comparison)
50
+
51
+ | Item | Value | Level |
52
+ |---|---|---|
53
+ | Source | Official release feed `https://api2.cursor.sh/updates/api/download/stable/linux-x64/sand` (opened 2026-11-07, version 0.79.2, commitSha `676f0815a4013954f4c8e3f4ac413acfbac0376c`) | S (recorded in analysis notes) |
54
+ | Package | `grok-bot_0.79.2_amd64.deb`, 112699424 bytes | re-hashed 2026-11-07 |
55
+ | deb sha256 | `0039b3832ad8743a95bb6c2a4f050e1ffbd491fc72dbbf71fdb8208799502217` (locally computed; **not** a verified publisher signature) | re-hashed |
56
+ | `opt/Grok Bot/resources/app.asar` sha256 | `cec56658c6879644f861ffef870561dca2e1dd9415985fcb2ccf43ff9977df89` | computed 2026-11-07 |
57
+ | `dist/electron-main/proto.cjs` | 1534017 bytes, sha256 `57ccef6a451a88cecb3d533df0b16991db577316e1572b19c118aa438fb15bf5` | re-extracted with `tools/protocol/asar_extract.py`, matches earlier record |
58
+ | `dist/electron-main/main-app.cjs` | 3506377 bytes, sha256 `b5f976ea3fba4e9564f4c9a828705a708774aa4f329a1133348e4a4eee5d8529` | same |
59
+ | `dist/electron-main/main-core.cjs` | 1160957 bytes, sha256 `310fac66118d490db826c9a17a4936ef11492a55c73d0d097480e28174f11e2f` | same |
60
+ | App `package.json` | `@bufbuild/protobuf` 1.10.1, `@connectrpc/connect` ^1.6.1 | extracted |
61
+ | 0.79.2 schema (upstream `extract_proto.py`) | 2922 messages, 387 enums, 7 services, 661 RPCs; unresolved refs 0, relocated 0 | S, run 2026-11-07 |
62
+
63
+ Prettified copies used for line-number citations (`A` = main-app, `C` = main-core) were produced with
64
+ prettier; their line numbers drift between versions — use the string anchors in auth-flow.md instead.
65
+
66
+ ## Status
67
+
68
+ - **The vendored code is the 0.79.3 schema** (regenerated 2026-11-07). Used surface 0.78.4 → 0.79.3: 0 breaking, additive only;
69
+ 0.79.2 → 0.79.3: no change in the used surface (full schema: +1 message, +1 field, +1 RPC `SetOnePasswordPreviousIntegration`).
70
+ - The 2026-11-07 live read-only check (login + ListGrokBotAgents / GetGrokBotUserRuntimeSettings / ListGrokBotAgentStatuses) was
71
+ done with the **old 0.78.4 vendor**. The 0.79.3 vendor is verified **offline only**.
72
+ - macOS builds were not analysed for 0.79.x.
@@ -0,0 +1,239 @@
1
+ ====================================================================
2
+ messages 2736 -> 2922 (+186 -0 ~71)
3
+ enums 349 -> 387
4
+ services 7 -> 7
5
+ ====================================================================
6
+
7
+ --- new messages ---
8
+ + agent.v1.ExecuteArgs
9
+ + agent.v1.ExecuteError
10
+ + agent.v1.ExecuteRejected
11
+ + agent.v1.ExecuteResult
12
+ + agent.v1.ExecuteSuccess
13
+ + agent.v1.ExecuteToolCall
14
+ + agent.v1.ManageAccessArgs
15
+ + agent.v1.ManageAccessError
16
+ + agent.v1.ManageAccessGrant
17
+ + agent.v1.ManageAccessResult
18
+ + agent.v1.ManageAccessSuccess
19
+ + agent.v1.ManageAccessTarget
20
+ + agent.v1.ManageAccessToolCall
21
+ + agent.v1.McpAppDocument
22
+ + aiserver.v1.ActOnGrokBotMeetingPromptRequest
23
+ + aiserver.v1.ActOnGrokBotMeetingPromptResponse
24
+ + aiserver.v1.AdminApplyGrokBotAccountMigrationRequest
25
+ + aiserver.v1.AdminApplyGrokBotAccountMigrationResponse
26
+ + aiserver.v1.AdminCancelGrokBotAccountMigrationsRequest
27
+ + aiserver.v1.AdminCancelGrokBotAccountMigrationsResponse
28
+ + aiserver.v1.AdminCleanGrokBotAccountMigrationRequest
29
+ + aiserver.v1.AdminCleanGrokBotAccountMigrationResponse
30
+ + aiserver.v1.AdminFailGrokBotAccountMigrationExportStartRequest
31
+ + aiserver.v1.AdminFailGrokBotAccountMigrationExportStartResponse
32
+ + aiserver.v1.AdminGetGrokBotAccountMigrationHeldSummaryRequest
33
+ + aiserver.v1.AdminGetGrokBotAccountMigrationHeldSummaryResponse
34
+ + aiserver.v1.AdminGetGrokBotAccountMigrationRequest
35
+ + aiserver.v1.AdminGetGrokBotAccountMigrationResponse
36
+ + aiserver.v1.AdminGetGrokBotAgentResourcesRequest
37
+ + aiserver.v1.AdminGetGrokBotAgentResourcesResponse
38
+ + aiserver.v1.AdminGetSandBoxActiveVmRequest
39
+ + aiserver.v1.AdminGetSandBoxActiveVmResponse
40
+ + aiserver.v1.AdminListGrokBotAccountMigrationLedgerRequest
41
+ + aiserver.v1.AdminListGrokBotAccountMigrationLedgerResponse
42
+ + aiserver.v1.AdminListGrokBotAccountMigrationsRequest
43
+ + aiserver.v1.AdminListGrokBotAccountMigrationsResponse
44
+ + aiserver.v1.AdminOverrideGrokBotAccountMigrationItemRequest
45
+ + aiserver.v1.AdminOverrideGrokBotAccountMigrationItemResponse
46
+ + aiserver.v1.AdminProposeGrokBotAccountMigrationPairsRequest
47
+ + aiserver.v1.AdminProposeGrokBotAccountMigrationPairsResponse
48
+ ... and 146 more
49
+
50
+ --- removed messages ---
51
+
52
+ --- changed messages ---
53
+ ~ agent.v1.McpSuccess
54
+ +6:mcp_app_document:agent.v1.McpAppDocument
55
+ ~ agent.v1.NewCloudVmTarget
56
+ +4:environment_id:string?
57
+ +5:repo_url:string?
58
+ ~ agent.v1.ShellArgs
59
+ +25:smart_mode_classifier_allowed:bool
60
+ ~ agent.v1.ToolCall
61
+ +95:manage_access_tool_call:agent.v1.ManageAccessToolCall
62
+ +1000:execute_tool_call:agent.v1.ExecuteToolCall
63
+ ~ agent.v1.WriteCanvasSuccess
64
+ +5:audience_notice:string?
65
+ ~ aiserver.v1.AdminBreakGlassDeleteSandBoxPodRequest
66
+ +6:tenant_id:string
67
+ ~ aiserver.v1.AdminBreakGlassDeleteSandBoxPodResponse
68
+ +6:recreated_tenant_id:string
69
+ ~ aiserver.v1.AppsSettings
70
+ +4:allow_api_key_access:bool?
71
+ ~ aiserver.v1.AvailableModelsResponse.AvailableModel
72
+ +49:gateway_published_model_id:string?
73
+ ~ aiserver.v1.CheckHttpMcpStatusRequest
74
+ +19:texted_sign_in:bool?
75
+ +20:grok_bot_session_id:string?
76
+ +21:connector_suite_capable:bool?
77
+ +22:connector_suite:aiserver.v1.ConnectorSuiteSelection?
78
+ ~ aiserver.v1.CheckHttpMcpStatusResponse.ServerStatus
79
+ +12:cloud_verdict:aiserver.v1.McpCloudVerdict
80
+ +13:connector_suite_offer:aiserver.v1.ConnectorSuiteOffer?
81
+ +14:connector_suite_exposure:aiserver.v1.ConnectorSuiteExposure
82
+ ~ aiserver.v1.CloudCanvasMetadata
83
+ +18:project_share:aiserver.v1.CanvasProjectShare?
84
+ ~ aiserver.v1.CommandDescriptor
85
+ +5:source_repo_url:string?
86
+ ~ aiserver.v1.CompleteMcpOAuthResponse
87
+ +5:connector_suite_result:aiserver.v1.ConnectorSuiteMemberResult*
88
+ ~ aiserver.v1.CompleteOnePasswordOAuthRequest
89
+ +4:error_description:string
90
+ ~ aiserver.v1.CreateGrokBotAgentFromTemplateRequest
91
+ +9:onboarding_connect_screen_shown:bool?
92
+ ~ aiserver.v1.CreateGrokBotAgentRequest
93
+ +18:visibility:aiserver.v1.GrokBotAgentVisibility?
94
+ +19:team_id:int32?
95
+ +20:bot_builder_requested:bool?
96
+ ~ aiserver.v1.DeleteMcpOAuthAccountRequest
97
+ +4:grok_bot_plugin_scope:aiserver.v1.GrokBotPluginScope?
98
+ +5:grok_bot_agent_id:string?
99
+ +6:grok_bot_session_id:string?
100
+ ~ aiserver.v1.ExecuteSandMcpToolRequest
101
+ +12:refuse_shared_payment_token_arguments:bool
102
+ ~ aiserver.v1.GetAvailableMcpServersRequest
103
+ +4:service_account_id:string?
104
+ +5:grok_bot_session_id:string?
105
+ ~ aiserver.v1.GetAvailableMcpServersResponse.McpServerInfo
106
+ +32:disabled_by_cloud_agent_mcp_allowlist:bool?
107
+ ~ aiserver.v1.GetDailySpendByCategoryRequest
108
+ +14:ranking_metric:aiserver.v1.DailySpendRankingMetric?
109
+ ~ aiserver.v1.GetGrokBotAgentAccessRequest
110
+ +3:query:string?
111
+ +4:people_cursor:string
112
+ +5:shows_bot_team_first:bool
113
+ ~ aiserver.v1.GetGrokBotAgentAccessResponse
114
+ +8:listed_people:aiserver.v1.GrokBotAccessPersonDirectoryEntry*
115
+ +9:listed_groups:aiserver.v1.GrokBotAccessGroupDirectoryEntry*
116
+ +10:candidate_people:aiserver.v1.GrokBotAccessPersonDirectoryEntry*
117
+ +11:next_people_cursor:string
118
+ +12:candidate_groups:aiserver.v1.GrokBotAccessGroupDirectoryEntry*
119
+ +13:candidate_teams:aiserver.v1.GrokBotAccessTeamDirectoryEntry*
120
+ ... 1 more field diffs
121
+ ~ aiserver.v1.GetGrokBotAgentPluginsResponse
122
+ -7:custom_mcp_per_user:bool?
123
+ +8:offered_service_account_plugin_ids:int64*
124
+ ~ aiserver.v1.GetGrokBotEgressPolicyResponse
125
+ +4:private_destination_rules:aiserver.v1.GrokBotPrivateDestinationRule*
126
+ ~ aiserver.v1.GetGrokBotMessagingLinkStatusResponse
127
+ +3:disabled_by_team_admin:bool
128
+ ~ aiserver.v1.GetGrokBotOnboardingDripInternalResponse
129
+ +3:router:aiserver.v1.GrokBotOnboardingDripRouter
130
+ ~ aiserver.v1.GetGrokBotTeamsInstallStateRequest
131
+ +3:check_now:bool?
132
+ ~ aiserver.v1.GetGrokBotTeamsInstallStateResponse
133
+ +26:check_outcome:string?
134
+ +27:checked_at_ms:int64?
135
+ +28:check_again_after_ms:uint32?
136
+ +29:teams_admin_center_url:string?
137
+ +30:teams_home_url:string?
138
+ ~ aiserver.v1.GetGrokBotUserRuntimeSettingsRequest
139
+ +1:after_main_agent_change:bool
140
+ ~ aiserver.v1.GetMeResponse
141
+ +22:signup_source:string?
142
+ +23:admin_session_management_enabled:bool
143
+ ~ aiserver.v1.GetSandAccessStatusResponse
144
+ +20:grok_connectors_only:bool
145
+ ~ aiserver.v1.GetSandUsageStatusResponse
146
+ +27:upgrade_option:aiserver.v1.SandUpgradeOption?
147
+ ~ aiserver.v1.GetSlackInstallUrlRequest
148
+ +7:reconnect_slack_team_id:string?
149
+ ~ aiserver.v1.GetSlackUserSettingsResponse
150
+ +15:origin_link_unfurls_enabled:bool?
151
+ ~ aiserver.v1.GetTeamAdminSettingsRequest
152
+ +2:supports_host_mcp_bridge_exemption:bool?
153
+ ~ aiserver.v1.GetTeamAdminSettingsResponse
154
+ +99:cloud_agent_mcp_allowlist_applied:bool?
155
+ +100:grok_bot_texting_controls:aiserver.v1.GrokBotTextingControls?
156
+ +101:grok_bot_wall_snapshot_controls:aiserver.v1.GrokBotWallSnapshotControls?
157
+ +102:sand_box_sudo_not_applied_box_count:uint32?
158
+ ~ aiserver.v1.GetTeamTailnetResponse
159
+ +18:allow_unlabeled:bool?
160
+ ~ aiserver.v1.GrokBotAccessCrossTierDirectory
161
+ +4:organization_team_count:uint32
162
+ ... and 31 more
163
+
164
+ --- enum changes ---
165
+ ~ aiserver.v1.BackgroundComposerSource
166
+ 38: None -> BACKGROUND_COMPOSER_SOURCE_EMAIL
167
+ ~ aiserver.v1.BackgroundComposerUpdateKind
168
+ 16: None -> BACKGROUND_COMPOSER_UPDATE_KIND_PROJECT_APPS_CHANGED
169
+ ~ aiserver.v1.GrokBotUserSettingsField
170
+ 11: None -> GROK_BOT_USER_SETTINGS_FIELD_CART
171
+ ~ aiserver.v1.SlackConnectSource
172
+ 23: None -> SLACK_CONNECT_SOURCE_GLASS_UNATTRIBUTED
173
+ 24: None -> SLACK_CONNECT_SOURCE_IDE_UNATTRIBUTED
174
+ 25: None -> SLACK_CONNECT_SOURCE_WEB_UNATTRIBUTED
175
+ 26: None -> SLACK_CONNECT_SOURCE_GROK_BOT_UNATTRIBUTED
176
+ ~ aiserver.v1.SpendGroupByCategory
177
+ 6: None -> SPEND_GROUP_BY_CATEGORY_USER
178
+ (5 enums changed, +38 new, -0 removed)
179
+
180
+ --- service / RPC changes ---
181
+ methods 607 -> 661
182
+
183
+ aiserver.v1.DashboardService
184
+ + GetGrokBotUsageBreakdown(aiserver.v1.GetGrokBotUsageBreakdownRequest) -> aiserver.v1.GetGrokBotUsageBreakdownResponse [Unary]
185
+ + GetSandEnterpriseSpendLimit(aiserver.v1.GetSandEnterpriseSpendLimitRequest) -> aiserver.v1.GetSandEnterpriseSpendLimitResponse [Unary]
186
+ + ListSlackLinkedWorkspaces(aiserver.v1.ListSlackLinkedWorkspacesRequest) -> aiserver.v1.ListSlackLinkedWorkspacesResponse [Unary]
187
+ + RunCanvasConnectorAction(aiserver.v1.RunCanvasConnectorActionRequest) -> aiserver.v1.RunCanvasConnectorActionResponse [Unary]
188
+ + SetSandAutomationSlackWorkspace(aiserver.v1.SetSandAutomationSlackWorkspaceRequest) -> aiserver.v1.SetSandAutomationSlackWorkspaceResponse [Unary]
189
+
190
+ aiserver.v1.GrokBotService
191
+ + ActOnGrokBotMeetingPrompt(aiserver.v1.ActOnGrokBotMeetingPromptRequest) -> aiserver.v1.ActOnGrokBotMeetingPromptResponse [Unary]
192
+ + AdminApplyGrokBotAccountMigration(aiserver.v1.AdminApplyGrokBotAccountMigrationRequest) -> aiserver.v1.AdminApplyGrokBotAccountMigrationResponse [Unary]
193
+ + AdminCancelGrokBotAccountMigrations(aiserver.v1.AdminCancelGrokBotAccountMigrationsRequest) -> aiserver.v1.AdminCancelGrokBotAccountMigrationsResponse [Unary]
194
+ + AdminCleanGrokBotAccountMigration(aiserver.v1.AdminCleanGrokBotAccountMigrationRequest) -> aiserver.v1.AdminCleanGrokBotAccountMigrationResponse [Unary]
195
+ + AdminFailGrokBotAccountMigrationExportStart(aiserver.v1.AdminFailGrokBotAccountMigrationExportStartRequest) -> aiserver.v1.AdminFailGrokBotAccountMigrationExportStartResponse [Unary]
196
+ + AdminGetGrokBotAccountMigration(aiserver.v1.AdminGetGrokBotAccountMigrationRequest) -> aiserver.v1.AdminGetGrokBotAccountMigrationResponse [Unary]
197
+ + AdminGetGrokBotAccountMigrationHeldSummary(aiserver.v1.AdminGetGrokBotAccountMigrationHeldSummaryRequest) -> aiserver.v1.AdminGetGrokBotAccountMigrationHeldSummaryResponse [Unary]
198
+ + AdminGetGrokBotAgentResources(aiserver.v1.AdminGetGrokBotAgentResourcesRequest) -> aiserver.v1.AdminGetGrokBotAgentResourcesResponse [Unary]
199
+ + AdminGetSandBoxActiveVm(aiserver.v1.AdminGetSandBoxActiveVmRequest) -> aiserver.v1.AdminGetSandBoxActiveVmResponse [Unary]
200
+ + AdminListGrokBotAccountMigrationLedger(aiserver.v1.AdminListGrokBotAccountMigrationLedgerRequest) -> aiserver.v1.AdminListGrokBotAccountMigrationLedgerResponse [Unary]
201
+ + AdminListGrokBotAccountMigrations(aiserver.v1.AdminListGrokBotAccountMigrationsRequest) -> aiserver.v1.AdminListGrokBotAccountMigrationsResponse [Unary]
202
+ + AdminOverrideGrokBotAccountMigrationItem(aiserver.v1.AdminOverrideGrokBotAccountMigrationItemRequest) -> aiserver.v1.AdminOverrideGrokBotAccountMigrationItemResponse [Unary]
203
+ + AdminProposeGrokBotAccountMigrationPairs(aiserver.v1.AdminProposeGrokBotAccountMigrationPairsRequest) -> aiserver.v1.AdminProposeGrokBotAccountMigrationPairsResponse [Unary]
204
+ + AdminResolveGrokBotAccountMigrationPairs(aiserver.v1.AdminResolveGrokBotAccountMigrationPairsRequest) -> aiserver.v1.AdminResolveGrokBotAccountMigrationPairsResponse [Unary]
205
+ + AdminRetryGrokBotAccountMigrations(aiserver.v1.AdminRetryGrokBotAccountMigrationsRequest) -> aiserver.v1.AdminRetryGrokBotAccountMigrationsResponse [Unary]
206
+ + AdminStartGrokBotDream(aiserver.v1.AdminStartGrokBotDreamRequest) -> aiserver.v1.AdminStartGrokBotDreamResponse [Unary]
207
+ + AdminSubmitGrokBotAccountMigrations(aiserver.v1.AdminSubmitGrokBotAccountMigrationsRequest) -> aiserver.v1.AdminSubmitGrokBotAccountMigrationsResponse [Unary]
208
+ + AnswerGrokBotLabelerQuestion(aiserver.v1.AnswerGrokBotLabelerQuestionRequest) -> aiserver.v1.AnswerGrokBotLabelerQuestionResponse [Unary]
209
+ + AnswerGrokBotMessagingCard(aiserver.v1.AnswerGrokBotMessagingCardRequest) -> aiserver.v1.AnswerGrokBotMessagingCardResponse [Unary]
210
+ + CreateGrokBotOnboardingDripRouteInternal(aiserver.v1.CreateGrokBotOnboardingDripRouteInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
211
+ + DeleteGrokBotUserProfilePhoto(aiserver.v1.DeleteGrokBotUserProfilePhotoRequest) -> aiserver.v1.DeleteGrokBotUserProfilePhotoResponse [Unary]
212
+ + GenerateGrokBotTryOnImage(aiserver.v1.GenerateGrokBotTryOnImageRequest) -> aiserver.v1.GenerateGrokBotTryOnImageResponse [Unary]
213
+ + GetGrokBotInviteByEmailAccess(aiserver.v1.GetGrokBotInviteByEmailAccessRequest) -> aiserver.v1.GetGrokBotInviteByEmailAccessResponse [Unary]
214
+ + GetGrokBotMessagingCard(aiserver.v1.GetGrokBotMessagingCardRequest) -> aiserver.v1.GetGrokBotMessagingCardResponse [Unary]
215
+ + GetGrokBotPlaceDetails(aiserver.v1.GetGrokBotPlaceDetailsRequest) -> aiserver.v1.GetGrokBotPlaceDetailsResponse [Unary]
216
+ + GetGrokBotUserProfile(aiserver.v1.GetGrokBotUserProfileRequest) -> aiserver.v1.GetGrokBotUserProfileResponse [Unary]
217
+ + ListGrokBotCartItems(aiserver.v1.ListGrokBotCartItemsRequest) -> aiserver.v1.ListGrokBotCartItemsResponse [Unary]
218
+ + ListGrokBotTryOnImages(aiserver.v1.ListGrokBotTryOnImagesRequest) -> aiserver.v1.ListGrokBotTryOnImagesResponse [Unary]
219
+ + LookupGrokBotShoppingProduct(aiserver.v1.LookupGrokBotShoppingProductRequest) -> aiserver.v1.LookupGrokBotShoppingProductResponse [Unary]
220
+ + MakeGrokBotAgentFilePrivate(aiserver.v1.MakeGrokBotAgentFilePrivateRequest) -> aiserver.v1.MakeGrokBotAgentFilePrivateResponse [Unary]
221
+ + MakeGrokBotAgentSkillPrivate(aiserver.v1.MakeGrokBotAgentSkillPrivateRequest) -> aiserver.v1.MakeGrokBotAgentSkillPrivateResponse [Unary]
222
+ + PollGrokBotCalendarEvents(aiserver.v1.PollGrokBotCalendarEventsRequest) -> aiserver.v1.PollGrokBotCalendarEventsResponse [Unary]
223
+ + RemoveGrokBotCartItems(aiserver.v1.RemoveGrokBotCartItemsRequest) -> aiserver.v1.RemoveGrokBotCartItemsResponse [Unary]
224
+ + RemoveGrokBotOnboardingDripRouteInternal(aiserver.v1.RemoveGrokBotOnboardingDripRouteInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
225
+ + ReorderGrokBotOnboardingDripRoutesInternal(aiserver.v1.ReorderGrokBotOnboardingDripRoutesInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
226
+ + ReportGrokBotMessagingCapabilities(aiserver.v1.ReportGrokBotMessagingCapabilitiesRequest) -> aiserver.v1.ReportGrokBotMessagingCapabilitiesResponse [Unary]
227
+ + ReportSandBoxStoreFlush(aiserver.v1.ReportSandBoxStoreFlushRequest) -> aiserver.v1.ReportSandBoxStoreFlushResponse [Unary]
228
+ + ResolveGrokBotFlightBookingLink(aiserver.v1.ResolveGrokBotFlightBookingLinkRequest) -> aiserver.v1.ResolveGrokBotFlightBookingLinkResponse [Unary]
229
+ + SearchGrokBotSimilarProducts(aiserver.v1.SearchGrokBotSimilarProductsRequest) -> aiserver.v1.SearchGrokBotSimilarProductsResponse [Unary]
230
+ + SearchGrokBotTranscripts(aiserver.v1.SearchGrokBotTranscriptsRequest) -> aiserver.v1.SearchGrokBotTranscriptsResponse [Unary]
231
+ + SendGrokBotOnboardingDripStepNowInternal(aiserver.v1.SendGrokBotOnboardingDripStepNowInternalRequest) -> aiserver.v1.SendGrokBotOnboardingDripStepNowInternalResponse [Unary]
232
+ + SetGrokBotAgentRoutineForTeam(aiserver.v1.SetGrokBotAgentRoutineForTeamRequest) -> aiserver.v1.SetGrokBotAgentRoutineForTeamResponse [Unary]
233
+ + SetGrokBotCartItem(aiserver.v1.SetGrokBotCartItemRequest) -> aiserver.v1.SetGrokBotCartItemResponse [Unary]
234
+ + SetGrokBotOnboardingDripRouterStatusInternal(aiserver.v1.SetGrokBotOnboardingDripRouterStatusInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
235
+ + SetGrokBotUserProfilePhoto(aiserver.v1.SetGrokBotUserProfilePhotoRequest) -> aiserver.v1.SetGrokBotUserProfilePhotoResponse [Unary]
236
+ + SummarizeGrokBotTeamReviewItems(aiserver.v1.SummarizeGrokBotTeamReviewItemsRequest) -> aiserver.v1.SummarizeGrokBotTeamReviewItemsResponse [Unary]
237
+ + UpdateGrokBotMeetingSettings(aiserver.v1.UpdateGrokBotMeetingSettingsRequest) -> aiserver.v1.UpdateGrokBotMeetingSettingsResponse [Unary]
238
+ + UpdateGrokBotOnboardingDripRouteInternal(aiserver.v1.UpdateGrokBotOnboardingDripRouteInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
239
+ + WatchGrokBotCalendarEvents(aiserver.v1.WatchGrokBotCalendarEventsRequest) -> aiserver.v1.WatchGrokBotCalendarEventsEvent [ServerStreaming]
@@ -0,0 +1,240 @@
1
+ ====================================================================
2
+ messages 2736 -> 2923 (+187 -0 ~72)
3
+ enums 349 -> 387
4
+ services 7 -> 7
5
+ ====================================================================
6
+
7
+ --- new messages ---
8
+ + agent.v1.ExecuteArgs
9
+ + agent.v1.ExecuteError
10
+ + agent.v1.ExecuteRejected
11
+ + agent.v1.ExecuteResult
12
+ + agent.v1.ExecuteSuccess
13
+ + agent.v1.ExecuteToolCall
14
+ + agent.v1.ManageAccessArgs
15
+ + agent.v1.ManageAccessError
16
+ + agent.v1.ManageAccessGrant
17
+ + agent.v1.ManageAccessResult
18
+ + agent.v1.ManageAccessSuccess
19
+ + agent.v1.ManageAccessTarget
20
+ + agent.v1.ManageAccessToolCall
21
+ + agent.v1.McpAppDocument
22
+ + aiserver.v1.ActOnGrokBotMeetingPromptRequest
23
+ + aiserver.v1.ActOnGrokBotMeetingPromptResponse
24
+ + aiserver.v1.AdminApplyGrokBotAccountMigrationRequest
25
+ + aiserver.v1.AdminApplyGrokBotAccountMigrationResponse
26
+ + aiserver.v1.AdminCancelGrokBotAccountMigrationsRequest
27
+ + aiserver.v1.AdminCancelGrokBotAccountMigrationsResponse
28
+ + aiserver.v1.AdminCleanGrokBotAccountMigrationRequest
29
+ + aiserver.v1.AdminCleanGrokBotAccountMigrationResponse
30
+ + aiserver.v1.AdminFailGrokBotAccountMigrationExportStartRequest
31
+ + aiserver.v1.AdminFailGrokBotAccountMigrationExportStartResponse
32
+ + aiserver.v1.AdminGetGrokBotAccountMigrationHeldSummaryRequest
33
+ + aiserver.v1.AdminGetGrokBotAccountMigrationHeldSummaryResponse
34
+ + aiserver.v1.AdminGetGrokBotAccountMigrationRequest
35
+ + aiserver.v1.AdminGetGrokBotAccountMigrationResponse
36
+ + aiserver.v1.AdminGetGrokBotAgentResourcesRequest
37
+ + aiserver.v1.AdminGetGrokBotAgentResourcesResponse
38
+ + aiserver.v1.AdminGetSandBoxActiveVmRequest
39
+ + aiserver.v1.AdminGetSandBoxActiveVmResponse
40
+ + aiserver.v1.AdminListGrokBotAccountMigrationLedgerRequest
41
+ + aiserver.v1.AdminListGrokBotAccountMigrationLedgerResponse
42
+ + aiserver.v1.AdminListGrokBotAccountMigrationsRequest
43
+ + aiserver.v1.AdminListGrokBotAccountMigrationsResponse
44
+ + aiserver.v1.AdminOverrideGrokBotAccountMigrationItemRequest
45
+ + aiserver.v1.AdminOverrideGrokBotAccountMigrationItemResponse
46
+ + aiserver.v1.AdminProposeGrokBotAccountMigrationPairsRequest
47
+ + aiserver.v1.AdminProposeGrokBotAccountMigrationPairsResponse
48
+ ... and 147 more
49
+
50
+ --- removed messages ---
51
+
52
+ --- changed messages ---
53
+ ~ agent.v1.McpSuccess
54
+ +6:mcp_app_document:agent.v1.McpAppDocument
55
+ ~ agent.v1.NewCloudVmTarget
56
+ +4:environment_id:string?
57
+ +5:repo_url:string?
58
+ ~ agent.v1.ShellArgs
59
+ +25:smart_mode_classifier_allowed:bool
60
+ ~ agent.v1.ToolCall
61
+ +95:manage_access_tool_call:agent.v1.ManageAccessToolCall
62
+ +1000:execute_tool_call:agent.v1.ExecuteToolCall
63
+ ~ agent.v1.WriteCanvasSuccess
64
+ +5:audience_notice:string?
65
+ ~ aiserver.v1.AdminBreakGlassDeleteSandBoxPodRequest
66
+ +6:tenant_id:string
67
+ ~ aiserver.v1.AdminBreakGlassDeleteSandBoxPodResponse
68
+ +6:recreated_tenant_id:string
69
+ ~ aiserver.v1.AppsSettings
70
+ +4:allow_api_key_access:bool?
71
+ ~ aiserver.v1.AvailableModelsResponse.AvailableModel
72
+ +49:gateway_published_model_id:string?
73
+ ~ aiserver.v1.CheckHttpMcpStatusRequest
74
+ +19:texted_sign_in:bool?
75
+ +20:grok_bot_session_id:string?
76
+ +21:connector_suite_capable:bool?
77
+ +22:connector_suite:aiserver.v1.ConnectorSuiteSelection?
78
+ ~ aiserver.v1.CheckHttpMcpStatusResponse.ServerStatus
79
+ +12:cloud_verdict:aiserver.v1.McpCloudVerdict
80
+ +13:connector_suite_offer:aiserver.v1.ConnectorSuiteOffer?
81
+ +14:connector_suite_exposure:aiserver.v1.ConnectorSuiteExposure
82
+ ~ aiserver.v1.CloudCanvasMetadata
83
+ +18:project_share:aiserver.v1.CanvasProjectShare?
84
+ ~ aiserver.v1.CommandDescriptor
85
+ +5:source_repo_url:string?
86
+ ~ aiserver.v1.CompleteMcpOAuthResponse
87
+ +5:connector_suite_result:aiserver.v1.ConnectorSuiteMemberResult*
88
+ ~ aiserver.v1.CompleteOnePasswordOAuthRequest
89
+ +4:error_description:string
90
+ ~ aiserver.v1.CreateGrokBotAgentFromTemplateRequest
91
+ +9:onboarding_connect_screen_shown:bool?
92
+ ~ aiserver.v1.CreateGrokBotAgentRequest
93
+ +18:visibility:aiserver.v1.GrokBotAgentVisibility?
94
+ +19:team_id:int32?
95
+ +20:bot_builder_requested:bool?
96
+ ~ aiserver.v1.DeleteMcpOAuthAccountRequest
97
+ +4:grok_bot_plugin_scope:aiserver.v1.GrokBotPluginScope?
98
+ +5:grok_bot_agent_id:string?
99
+ +6:grok_bot_session_id:string?
100
+ ~ aiserver.v1.ExecuteSandMcpToolRequest
101
+ +12:refuse_shared_payment_token_arguments:bool
102
+ ~ aiserver.v1.GetAvailableMcpServersRequest
103
+ +4:service_account_id:string?
104
+ +5:grok_bot_session_id:string?
105
+ ~ aiserver.v1.GetAvailableMcpServersResponse.McpServerInfo
106
+ +32:disabled_by_cloud_agent_mcp_allowlist:bool?
107
+ ~ aiserver.v1.GetDailySpendByCategoryRequest
108
+ +14:ranking_metric:aiserver.v1.DailySpendRankingMetric?
109
+ ~ aiserver.v1.GetGrokBotAgentAccessRequest
110
+ +3:query:string?
111
+ +4:people_cursor:string
112
+ +5:shows_bot_team_first:bool
113
+ ~ aiserver.v1.GetGrokBotAgentAccessResponse
114
+ +8:listed_people:aiserver.v1.GrokBotAccessPersonDirectoryEntry*
115
+ +9:listed_groups:aiserver.v1.GrokBotAccessGroupDirectoryEntry*
116
+ +10:candidate_people:aiserver.v1.GrokBotAccessPersonDirectoryEntry*
117
+ +11:next_people_cursor:string
118
+ +12:candidate_groups:aiserver.v1.GrokBotAccessGroupDirectoryEntry*
119
+ +13:candidate_teams:aiserver.v1.GrokBotAccessTeamDirectoryEntry*
120
+ ... 1 more field diffs
121
+ ~ aiserver.v1.GetGrokBotAgentPluginsResponse
122
+ -7:custom_mcp_per_user:bool?
123
+ +8:offered_service_account_plugin_ids:int64*
124
+ ~ aiserver.v1.GetGrokBotEgressPolicyResponse
125
+ +4:private_destination_rules:aiserver.v1.GrokBotPrivateDestinationRule*
126
+ ~ aiserver.v1.GetGrokBotMessagingLinkStatusResponse
127
+ +3:disabled_by_team_admin:bool
128
+ ~ aiserver.v1.GetGrokBotOnboardingDripInternalResponse
129
+ +3:router:aiserver.v1.GrokBotOnboardingDripRouter
130
+ ~ aiserver.v1.GetGrokBotTeamsInstallStateRequest
131
+ +3:check_now:bool?
132
+ ~ aiserver.v1.GetGrokBotTeamsInstallStateResponse
133
+ +26:check_outcome:string?
134
+ +27:checked_at_ms:int64?
135
+ +28:check_again_after_ms:uint32?
136
+ +29:teams_admin_center_url:string?
137
+ +30:teams_home_url:string?
138
+ ~ aiserver.v1.GetGrokBotUserRuntimeSettingsRequest
139
+ +1:after_main_agent_change:bool
140
+ ~ aiserver.v1.GetMeResponse
141
+ +22:signup_source:string?
142
+ +23:admin_session_management_enabled:bool
143
+ ~ aiserver.v1.GetSandAccessStatusResponse
144
+ +20:grok_connectors_only:bool
145
+ ~ aiserver.v1.GetSandUsageStatusResponse
146
+ +27:upgrade_option:aiserver.v1.SandUpgradeOption?
147
+ ~ aiserver.v1.GetSlackInstallUrlRequest
148
+ +7:reconnect_slack_team_id:string?
149
+ ~ aiserver.v1.GetSlackUserSettingsResponse
150
+ +15:origin_link_unfurls_enabled:bool?
151
+ ~ aiserver.v1.GetTeamAdminSettingsRequest
152
+ +2:supports_host_mcp_bridge_exemption:bool?
153
+ ~ aiserver.v1.GetTeamAdminSettingsResponse
154
+ +99:cloud_agent_mcp_allowlist_applied:bool?
155
+ +100:grok_bot_texting_controls:aiserver.v1.GrokBotTextingControls?
156
+ +101:grok_bot_wall_snapshot_controls:aiserver.v1.GrokBotWallSnapshotControls?
157
+ +102:sand_box_sudo_not_applied_box_count:uint32?
158
+ ~ aiserver.v1.GetTeamTailnetResponse
159
+ +18:allow_unlabeled:bool?
160
+ ~ aiserver.v1.GrokBotAccessCrossTierDirectory
161
+ +4:organization_team_count:uint32
162
+ ... and 32 more
163
+
164
+ --- enum changes ---
165
+ ~ aiserver.v1.BackgroundComposerSource
166
+ 38: None -> BACKGROUND_COMPOSER_SOURCE_EMAIL
167
+ ~ aiserver.v1.BackgroundComposerUpdateKind
168
+ 16: None -> BACKGROUND_COMPOSER_UPDATE_KIND_PROJECT_APPS_CHANGED
169
+ ~ aiserver.v1.GrokBotUserSettingsField
170
+ 11: None -> GROK_BOT_USER_SETTINGS_FIELD_CART
171
+ ~ aiserver.v1.SlackConnectSource
172
+ 23: None -> SLACK_CONNECT_SOURCE_GLASS_UNATTRIBUTED
173
+ 24: None -> SLACK_CONNECT_SOURCE_IDE_UNATTRIBUTED
174
+ 25: None -> SLACK_CONNECT_SOURCE_WEB_UNATTRIBUTED
175
+ 26: None -> SLACK_CONNECT_SOURCE_GROK_BOT_UNATTRIBUTED
176
+ ~ aiserver.v1.SpendGroupByCategory
177
+ 6: None -> SPEND_GROUP_BY_CATEGORY_USER
178
+ (5 enums changed, +38 new, -0 removed)
179
+
180
+ --- service / RPC changes ---
181
+ methods 607 -> 662
182
+
183
+ aiserver.v1.DashboardService
184
+ + GetGrokBotUsageBreakdown(aiserver.v1.GetGrokBotUsageBreakdownRequest) -> aiserver.v1.GetGrokBotUsageBreakdownResponse [Unary]
185
+ + GetSandEnterpriseSpendLimit(aiserver.v1.GetSandEnterpriseSpendLimitRequest) -> aiserver.v1.GetSandEnterpriseSpendLimitResponse [Unary]
186
+ + ListSlackLinkedWorkspaces(aiserver.v1.ListSlackLinkedWorkspacesRequest) -> aiserver.v1.ListSlackLinkedWorkspacesResponse [Unary]
187
+ + RunCanvasConnectorAction(aiserver.v1.RunCanvasConnectorActionRequest) -> aiserver.v1.RunCanvasConnectorActionResponse [Unary]
188
+ + SetSandAutomationSlackWorkspace(aiserver.v1.SetSandAutomationSlackWorkspaceRequest) -> aiserver.v1.SetSandAutomationSlackWorkspaceResponse [Unary]
189
+
190
+ aiserver.v1.GrokBotService
191
+ + ActOnGrokBotMeetingPrompt(aiserver.v1.ActOnGrokBotMeetingPromptRequest) -> aiserver.v1.ActOnGrokBotMeetingPromptResponse [Unary]
192
+ + AdminApplyGrokBotAccountMigration(aiserver.v1.AdminApplyGrokBotAccountMigrationRequest) -> aiserver.v1.AdminApplyGrokBotAccountMigrationResponse [Unary]
193
+ + AdminCancelGrokBotAccountMigrations(aiserver.v1.AdminCancelGrokBotAccountMigrationsRequest) -> aiserver.v1.AdminCancelGrokBotAccountMigrationsResponse [Unary]
194
+ + AdminCleanGrokBotAccountMigration(aiserver.v1.AdminCleanGrokBotAccountMigrationRequest) -> aiserver.v1.AdminCleanGrokBotAccountMigrationResponse [Unary]
195
+ + AdminFailGrokBotAccountMigrationExportStart(aiserver.v1.AdminFailGrokBotAccountMigrationExportStartRequest) -> aiserver.v1.AdminFailGrokBotAccountMigrationExportStartResponse [Unary]
196
+ + AdminGetGrokBotAccountMigration(aiserver.v1.AdminGetGrokBotAccountMigrationRequest) -> aiserver.v1.AdminGetGrokBotAccountMigrationResponse [Unary]
197
+ + AdminGetGrokBotAccountMigrationHeldSummary(aiserver.v1.AdminGetGrokBotAccountMigrationHeldSummaryRequest) -> aiserver.v1.AdminGetGrokBotAccountMigrationHeldSummaryResponse [Unary]
198
+ + AdminGetGrokBotAgentResources(aiserver.v1.AdminGetGrokBotAgentResourcesRequest) -> aiserver.v1.AdminGetGrokBotAgentResourcesResponse [Unary]
199
+ + AdminGetSandBoxActiveVm(aiserver.v1.AdminGetSandBoxActiveVmRequest) -> aiserver.v1.AdminGetSandBoxActiveVmResponse [Unary]
200
+ + AdminListGrokBotAccountMigrationLedger(aiserver.v1.AdminListGrokBotAccountMigrationLedgerRequest) -> aiserver.v1.AdminListGrokBotAccountMigrationLedgerResponse [Unary]
201
+ + AdminListGrokBotAccountMigrations(aiserver.v1.AdminListGrokBotAccountMigrationsRequest) -> aiserver.v1.AdminListGrokBotAccountMigrationsResponse [Unary]
202
+ + AdminOverrideGrokBotAccountMigrationItem(aiserver.v1.AdminOverrideGrokBotAccountMigrationItemRequest) -> aiserver.v1.AdminOverrideGrokBotAccountMigrationItemResponse [Unary]
203
+ + AdminProposeGrokBotAccountMigrationPairs(aiserver.v1.AdminProposeGrokBotAccountMigrationPairsRequest) -> aiserver.v1.AdminProposeGrokBotAccountMigrationPairsResponse [Unary]
204
+ + AdminResolveGrokBotAccountMigrationPairs(aiserver.v1.AdminResolveGrokBotAccountMigrationPairsRequest) -> aiserver.v1.AdminResolveGrokBotAccountMigrationPairsResponse [Unary]
205
+ + AdminRetryGrokBotAccountMigrations(aiserver.v1.AdminRetryGrokBotAccountMigrationsRequest) -> aiserver.v1.AdminRetryGrokBotAccountMigrationsResponse [Unary]
206
+ + AdminStartGrokBotDream(aiserver.v1.AdminStartGrokBotDreamRequest) -> aiserver.v1.AdminStartGrokBotDreamResponse [Unary]
207
+ + AdminSubmitGrokBotAccountMigrations(aiserver.v1.AdminSubmitGrokBotAccountMigrationsRequest) -> aiserver.v1.AdminSubmitGrokBotAccountMigrationsResponse [Unary]
208
+ + AnswerGrokBotLabelerQuestion(aiserver.v1.AnswerGrokBotLabelerQuestionRequest) -> aiserver.v1.AnswerGrokBotLabelerQuestionResponse [Unary]
209
+ + AnswerGrokBotMessagingCard(aiserver.v1.AnswerGrokBotMessagingCardRequest) -> aiserver.v1.AnswerGrokBotMessagingCardResponse [Unary]
210
+ + CreateGrokBotOnboardingDripRouteInternal(aiserver.v1.CreateGrokBotOnboardingDripRouteInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
211
+ + DeleteGrokBotUserProfilePhoto(aiserver.v1.DeleteGrokBotUserProfilePhotoRequest) -> aiserver.v1.DeleteGrokBotUserProfilePhotoResponse [Unary]
212
+ + GenerateGrokBotTryOnImage(aiserver.v1.GenerateGrokBotTryOnImageRequest) -> aiserver.v1.GenerateGrokBotTryOnImageResponse [Unary]
213
+ + GetGrokBotInviteByEmailAccess(aiserver.v1.GetGrokBotInviteByEmailAccessRequest) -> aiserver.v1.GetGrokBotInviteByEmailAccessResponse [Unary]
214
+ + GetGrokBotMessagingCard(aiserver.v1.GetGrokBotMessagingCardRequest) -> aiserver.v1.GetGrokBotMessagingCardResponse [Unary]
215
+ + GetGrokBotPlaceDetails(aiserver.v1.GetGrokBotPlaceDetailsRequest) -> aiserver.v1.GetGrokBotPlaceDetailsResponse [Unary]
216
+ + GetGrokBotUserProfile(aiserver.v1.GetGrokBotUserProfileRequest) -> aiserver.v1.GetGrokBotUserProfileResponse [Unary]
217
+ + ListGrokBotCartItems(aiserver.v1.ListGrokBotCartItemsRequest) -> aiserver.v1.ListGrokBotCartItemsResponse [Unary]
218
+ + ListGrokBotTryOnImages(aiserver.v1.ListGrokBotTryOnImagesRequest) -> aiserver.v1.ListGrokBotTryOnImagesResponse [Unary]
219
+ + LookupGrokBotShoppingProduct(aiserver.v1.LookupGrokBotShoppingProductRequest) -> aiserver.v1.LookupGrokBotShoppingProductResponse [Unary]
220
+ + MakeGrokBotAgentFilePrivate(aiserver.v1.MakeGrokBotAgentFilePrivateRequest) -> aiserver.v1.MakeGrokBotAgentFilePrivateResponse [Unary]
221
+ + MakeGrokBotAgentSkillPrivate(aiserver.v1.MakeGrokBotAgentSkillPrivateRequest) -> aiserver.v1.MakeGrokBotAgentSkillPrivateResponse [Unary]
222
+ + PollGrokBotCalendarEvents(aiserver.v1.PollGrokBotCalendarEventsRequest) -> aiserver.v1.PollGrokBotCalendarEventsResponse [Unary]
223
+ + RemoveGrokBotCartItems(aiserver.v1.RemoveGrokBotCartItemsRequest) -> aiserver.v1.RemoveGrokBotCartItemsResponse [Unary]
224
+ + RemoveGrokBotOnboardingDripRouteInternal(aiserver.v1.RemoveGrokBotOnboardingDripRouteInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
225
+ + ReorderGrokBotOnboardingDripRoutesInternal(aiserver.v1.ReorderGrokBotOnboardingDripRoutesInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
226
+ + ReportGrokBotMessagingCapabilities(aiserver.v1.ReportGrokBotMessagingCapabilitiesRequest) -> aiserver.v1.ReportGrokBotMessagingCapabilitiesResponse [Unary]
227
+ + ReportSandBoxStoreFlush(aiserver.v1.ReportSandBoxStoreFlushRequest) -> aiserver.v1.ReportSandBoxStoreFlushResponse [Unary]
228
+ + ResolveGrokBotFlightBookingLink(aiserver.v1.ResolveGrokBotFlightBookingLinkRequest) -> aiserver.v1.ResolveGrokBotFlightBookingLinkResponse [Unary]
229
+ + SearchGrokBotSimilarProducts(aiserver.v1.SearchGrokBotSimilarProductsRequest) -> aiserver.v1.SearchGrokBotSimilarProductsResponse [Unary]
230
+ + SearchGrokBotTranscripts(aiserver.v1.SearchGrokBotTranscriptsRequest) -> aiserver.v1.SearchGrokBotTranscriptsResponse [Unary]
231
+ + SendGrokBotOnboardingDripStepNowInternal(aiserver.v1.SendGrokBotOnboardingDripStepNowInternalRequest) -> aiserver.v1.SendGrokBotOnboardingDripStepNowInternalResponse [Unary]
232
+ + SetGrokBotAgentRoutineForTeam(aiserver.v1.SetGrokBotAgentRoutineForTeamRequest) -> aiserver.v1.SetGrokBotAgentRoutineForTeamResponse [Unary]
233
+ + SetGrokBotCartItem(aiserver.v1.SetGrokBotCartItemRequest) -> aiserver.v1.SetGrokBotCartItemResponse [Unary]
234
+ + SetGrokBotOnboardingDripRouterStatusInternal(aiserver.v1.SetGrokBotOnboardingDripRouterStatusInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
235
+ + SetGrokBotUserProfilePhoto(aiserver.v1.SetGrokBotUserProfilePhotoRequest) -> aiserver.v1.SetGrokBotUserProfilePhotoResponse [Unary]
236
+ + SetOnePasswordPreviousIntegration(aiserver.v1.SetOnePasswordPreviousIntegrationRequest) -> aiserver.v1.OnePasswordState [Unary]
237
+ + SummarizeGrokBotTeamReviewItems(aiserver.v1.SummarizeGrokBotTeamReviewItemsRequest) -> aiserver.v1.SummarizeGrokBotTeamReviewItemsResponse [Unary]
238
+ + UpdateGrokBotMeetingSettings(aiserver.v1.UpdateGrokBotMeetingSettingsRequest) -> aiserver.v1.UpdateGrokBotMeetingSettingsResponse [Unary]
239
+ + UpdateGrokBotOnboardingDripRouteInternal(aiserver.v1.UpdateGrokBotOnboardingDripRouteInternalRequest) -> aiserver.v1.GrokBotOnboardingDripRouter [Unary]
240
+ + WatchGrokBotCalendarEvents(aiserver.v1.WatchGrokBotCalendarEventsRequest) -> aiserver.v1.WatchGrokBotCalendarEventsEvent [ServerStreaming]
@@ -0,0 +1,23 @@
1
+ ====================================================================
2
+ messages 2922 -> 2923 (+1 -0 ~1)
3
+ enums 387 -> 387
4
+ services 7 -> 7
5
+ ====================================================================
6
+
7
+ --- new messages ---
8
+ + aiserver.v1.SetOnePasswordPreviousIntegrationRequest
9
+
10
+ --- removed messages ---
11
+
12
+ --- changed messages ---
13
+ ~ aiserver.v1.OnePasswordState
14
+ +4:uses_previous_integration:bool
15
+
16
+ --- enum changes ---
17
+ (0 enums changed, +0 new, -0 removed)
18
+
19
+ --- service / RPC changes ---
20
+ methods 661 -> 662
21
+
22
+ aiserver.v1.GrokBotService
23
+ + SetOnePasswordPreviousIntegration(aiserver.v1.SetOnePasswordPreviousIntegrationRequest) -> aiserver.v1.OnePasswordState [Unary]
@@ -0,0 +1,7 @@
1
+ # Restored schema — Grok Bot 0.79.3 (Linux amd64, commit 4739412)
2
+
3
+ `.proto` files: output of upstream `extract_proto.py` on the App's `proto.cjs` (static text parse), with trailing blank
4
+ lines at EOF trimmed for `git diff --check`. `snapshot.json.gz`: unmodified extractor snapshot (gzip -9n).
5
+ Hashes and provenance: [../../baseline-manifest.md](../../baseline-manifest.md). Not an official schema.
6
+
7
+ The **formal** (always-current) copy of these `.proto` files lives at [`proto/`](../../../../proto/). This directory is the versioned freeze for 0.79.3.