@mycadet/cli 0.12.7-dev.202610102207.24bf931 → 0.12.7-dev.202610111049.d2b52a8

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 (135) hide show
  1. package/README.md +2 -2
  2. package/knip.json +1 -1
  3. package/node_modules/@mycadet/assistant-api/events/{platform-disconnected.ts → cloud-disconnected.ts} +5 -5
  4. package/node_modules/@mycadet/assistant-api/events/host-bash.ts +1 -1
  5. package/node_modules/@mycadet/assistant-api/events/host-cu.ts +1 -1
  6. package/node_modules/@mycadet/assistant-api/events/host-file.ts +1 -1
  7. package/node_modules/@mycadet/assistant-api/events/notification-intent.ts +1 -1
  8. package/node_modules/@mycadet/assistant-api/events/{show-platform-login.ts → show-cloud-login.ts} +3 -5
  9. package/node_modules/@mycadet/assistant-api/index.ts +11 -11
  10. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/package.json +1 -1
  11. package/node_modules/@mycadet/{service-contracts/src/platform-credential.ts → assistant-api/node_modules/@mycadet/service-contracts/src/cloud-credential.ts} +9 -9
  12. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  13. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  14. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  15. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  16. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  17. package/node_modules/@mycadet/assistant-api/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  18. package/node_modules/@mycadet/assistant-api/responses/home.ts +1 -1
  19. package/node_modules/@mycadet/assistant-api/surfaces.ts +4 -4
  20. package/node_modules/@mycadet/avatar-manifest/src/__tests__/notification-avatar.test.ts +1 -1
  21. package/node_modules/@mycadet/avatar-manifest/src/notification-avatar.ts +2 -2
  22. package/node_modules/@mycadet/environments/src/seeds.ts +6 -6
  23. package/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
  24. package/node_modules/@mycadet/environments/src/types.ts +6 -6
  25. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/avatar-manifest/src/__tests__/notification-avatar.test.ts +1 -1
  26. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/avatar-manifest/src/notification-avatar.ts +2 -2
  27. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/environments/src/seeds.ts +6 -6
  28. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/environments/src/shell.test.ts +1 -1
  29. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/environments/src/types.ts +6 -6
  30. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/package.json +1 -1
  31. package/node_modules/@mycadet/{assistant-api/node_modules/@mycadet/service-contracts/src/platform-credential.ts → local-mode/node_modules/@mycadet/service-contracts/src/cloud-credential.ts} +9 -9
  32. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  33. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  34. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  35. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  36. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  37. package/node_modules/@mycadet/local-mode/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  38. package/node_modules/@mycadet/local-mode/src/__tests__/pair.test.ts +5 -5
  39. package/node_modules/@mycadet/local-mode/src/__tests__/retire.test.ts +1 -1
  40. package/node_modules/@mycadet/local-mode/src/config.ts +2 -2
  41. package/node_modules/@mycadet/local-mode/src/index.ts +1 -1
  42. package/node_modules/@mycadet/local-mode/src/lockfile-contract.test.ts +3 -3
  43. package/node_modules/@mycadet/local-mode/src/lockfile-contract.ts +10 -5
  44. package/node_modules/@mycadet/local-mode/src/lockfile.test.ts +15 -15
  45. package/node_modules/@mycadet/local-mode/src/lockfile.ts +9 -9
  46. package/node_modules/@mycadet/local-mode/src/pair.ts +2 -2
  47. package/node_modules/@mycadet/local-mode/src/retire.ts +3 -3
  48. package/node_modules/@mycadet/local-mode/src/teleport-backup-policy.ts +2 -2
  49. package/node_modules/@mycadet/local-mode/src/unpair.ts +2 -2
  50. package/node_modules/@mycadet/service-contracts/package.json +1 -1
  51. package/node_modules/@mycadet/{local-mode/node_modules/@mycadet/service-contracts/src/platform-credential.ts → service-contracts/src/cloud-credential.ts} +9 -9
  52. package/node_modules/@mycadet/service-contracts/src/handles.ts +3 -3
  53. package/node_modules/@mycadet/service-contracts/src/index.ts +1 -1
  54. package/node_modules/@mycadet/service-contracts/src/ingress.ts +1 -1
  55. package/node_modules/@mycadet/service-contracts/src/remote-web-pairing.ts +1 -1
  56. package/node_modules/@mycadet/service-contracts/src/rpc.ts +14 -14
  57. package/node_modules/@mycadet/service-contracts/src/trust-rules.ts +5 -5
  58. package/package.json +1 -1
  59. package/src/__tests__/assistant-api-key-resolution.test.ts +6 -6
  60. package/src/__tests__/{assistant-client-platform-auth.test.ts → assistant-client-cloud-auth.test.ts} +10 -10
  61. package/src/__tests__/assistant-client-refresh.test.ts +2 -2
  62. package/src/__tests__/backup.test.ts +46 -46
  63. package/src/__tests__/client-token.test.ts +1 -1
  64. package/src/__tests__/client-tui-refresh.test.ts +1 -1
  65. package/src/__tests__/client-web-config.test.ts +2 -2
  66. package/src/__tests__/{platform-client.test.ts → cloud-client.test.ts} +59 -59
  67. package/src/__tests__/{platform-releases.test.ts → cloud-releases.test.ts} +5 -5
  68. package/src/__tests__/debug.test.ts +14 -14
  69. package/src/__tests__/hatch-provider-secrets.test.ts +2 -2
  70. package/src/__tests__/nginx-ingress.test.ts +9 -9
  71. package/src/__tests__/orphan-detection.test.ts +1 -1
  72. package/src/__tests__/{ps-platform-status.test.ts → ps-cloud-status.test.ts} +26 -26
  73. package/src/__tests__/retire.test.ts +32 -32
  74. package/src/__tests__/statefulset.test.ts +8 -8
  75. package/src/__tests__/teleport-backup.test.ts +3 -3
  76. package/src/__tests__/teleport.test.ts +125 -125
  77. package/src/__tests__/upgrade-replay-env.test.ts +12 -12
  78. package/src/__tests__/workos-pkce.test.ts +2 -2
  79. package/src/commands/backup.ts +22 -22
  80. package/src/commands/client.ts +75 -75
  81. package/src/commands/debug.ts +20 -20
  82. package/src/commands/exec.ts +5 -5
  83. package/src/commands/hatch.ts +22 -22
  84. package/src/commands/login.ts +22 -22
  85. package/src/commands/logs.ts +1 -1
  86. package/src/commands/ps.ts +7 -7
  87. package/src/commands/restore.ts +13 -13
  88. package/src/commands/retire.ts +54 -47
  89. package/src/commands/rollback.ts +9 -9
  90. package/src/commands/setup.ts +2 -2
  91. package/src/commands/teleport.ts +93 -93
  92. package/src/commands/terminal.ts +12 -12
  93. package/src/commands/tunnel.ts +5 -5
  94. package/src/commands/unpair.ts +3 -3
  95. package/src/commands/upgrade.ts +18 -18
  96. package/src/lib/__tests__/{platform-client-signed-url.test.ts → cloud-client-signed-url.test.ts} +16 -16
  97. package/src/lib/__tests__/job-polling.test.ts +1 -1
  98. package/src/lib/__tests__/local-runtime-client.test.ts +4 -4
  99. package/src/lib/__tests__/runtime-url.test.ts +1 -1
  100. package/src/lib/assistant-api-key-resolution.ts +5 -5
  101. package/src/lib/assistant-client.ts +8 -8
  102. package/src/lib/assistant-config.ts +4 -3
  103. package/src/lib/{platform-client.ts → cloud-client.ts} +107 -98
  104. package/src/lib/cloud-login.ts +24 -24
  105. package/src/lib/{platform-releases.ts → cloud-releases.ts} +5 -5
  106. package/src/lib/cloud-values.ts +3 -0
  107. package/src/lib/config-utils.ts +1 -1
  108. package/src/lib/docker.ts +4 -4
  109. package/src/lib/environments/__tests__/paths.test.ts +2 -2
  110. package/src/lib/environments/__tests__/resolve.test.ts +26 -26
  111. package/src/lib/environments/resolve.ts +8 -8
  112. package/src/lib/hatch-local.ts +6 -6
  113. package/src/lib/health-check.ts +6 -6
  114. package/src/lib/ingress-config.ts +1 -1
  115. package/src/lib/job-polling.ts +1 -1
  116. package/src/lib/live-voice/connection.ts +12 -12
  117. package/src/lib/live-voice/tunnel.test.ts +11 -11
  118. package/src/lib/live-voice/tunnel.ts +15 -15
  119. package/src/lib/local-runtime-client.ts +20 -20
  120. package/src/lib/local.ts +3 -3
  121. package/src/lib/nginx-ingress.ts +4 -4
  122. package/src/lib/ngrok.ts +1 -1
  123. package/src/lib/process.ts +1 -1
  124. package/src/lib/provider-secrets.ts +3 -3
  125. package/src/lib/retire-apple-container.ts +1 -1
  126. package/src/lib/runtime-url.ts +8 -8
  127. package/src/lib/statefulset.ts +2 -2
  128. package/src/lib/sync-cloud-assistants.ts +18 -18
  129. package/src/lib/teleport-backup.ts +4 -4
  130. package/src/lib/terminal-client.ts +17 -17
  131. package/src/lib/terminal-session.ts +20 -20
  132. package/src/lib/upgrade-lifecycle.ts +3 -3
  133. package/src/lib/upgrade-preflight.ts +2 -2
  134. package/src/lib/workos-pkce.ts +5 -5
  135. package/src/lib/managed-cloud.ts +0 -3
package/README.md CHANGED
@@ -83,7 +83,7 @@ To self-host on a cloud VM (AWS, GCP, or any other provider), SSH into the machi
83
83
 
84
84
  ### `terminal`
85
85
 
86
- Open an interactive shell into a managed assistant container. Useful for debugging, inspecting state, or working alongside the assistant in a shared `tmux` session.
86
+ Open an interactive shell into a cloud assistant container. Useful for debugging, inspecting state, or working alongside the assistant in a shared `tmux` session.
87
87
 
88
88
  ```bash
89
89
  cadet terminal [name] [options]
@@ -91,7 +91,7 @@ cadet terminal attach <session> [name] [options]
91
91
  cadet terminal list [name] [options]
92
92
  ```
93
93
 
94
- Only available for managed assistants (those running in a Cadet Cloud container). Local assistants don't have a container to terminal into.
94
+ Only available for cloud assistants (those running in a Cadet Cloud container). Local assistants don't have a container to terminal into.
95
95
 
96
96
  #### Subcommands
97
97
 
package/knip.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "src/**/*.test.ts",
4
4
  "src/**/__tests__/**/*.ts",
5
5
  "src/lib/version-compat.ts",
6
- "src/lib/platform-releases.ts",
6
+ "src/lib/cloud-releases.ts",
7
7
  "src/lib/cli-error.ts",
8
8
  "scripts/**/*.ts"
9
9
  ],
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * `platform_disconnected` SSE event.
3
3
  *
4
- * Emitted by the platform-disconnect route after stored platform
5
- * credentials are deleted, notifying connected clients that the platform
4
+ * Emitted by the cloud-disconnect route after stored platform
5
+ * credentials are deleted, notifying connected clients that the cloud
6
6
  * connection is gone.
7
7
  *
8
8
  * Canonical wire-contract source. Daemon code imports the type
@@ -12,10 +12,10 @@
12
12
 
13
13
  import { z } from "zod";
14
14
 
15
- export const PlatformDisconnectedEventSchema = z.object({
15
+ export const CloudDisconnectedEventSchema = z.object({
16
16
  type: z.literal("platform_disconnected"),
17
17
  });
18
18
 
19
- export type PlatformDisconnectedEvent = z.infer<
20
- typeof PlatformDisconnectedEventSchema
19
+ export type CloudDisconnectedEvent = z.infer<
20
+ typeof CloudDisconnectedEventSchema
21
21
  >;
@@ -2,7 +2,7 @@
2
2
  * Host-bash proxy SSE events (`host_bash_request` / `host_bash_cancel`).
3
3
  *
4
4
  * Server → client instructions that proxy shell commands to the desktop
5
- * client (host machine) when running as a managed assistant. The client
5
+ * client (host machine) when running as a cloud assistant. The client
6
6
  * executes and POSTs the result back to `/v1/host-bash-result`;
7
7
  * `host_bash_cancel` withdraws an in-flight request. `targetClientId`
8
8
  * pins delivery to a single connected client.
@@ -2,7 +2,7 @@
2
2
  * Host computer-use proxy SSE events (`host_cu_request` / `host_cu_cancel`).
3
3
  *
4
4
  * Server → client instructions that proxy computer-use actions (click,
5
- * type, screenshot, …) to the desktop client when running as a managed
5
+ * type, screenshot, …) to the desktop client when running as a cloud
6
6
  * assistant. The client executes and POSTs the result back to
7
7
  * `/v1/host-cu-result`; `host_cu_cancel` withdraws an in-flight request.
8
8
  *
@@ -2,7 +2,7 @@
2
2
  * Host-file proxy SSE events (`host_file_request` / `host_file_cancel`).
3
3
  *
4
4
  * Server → client instructions that proxy file operations (read / write /
5
- * edit) to the desktop client when running as a managed assistant. The
5
+ * edit) to the desktop client when running as a cloud assistant. The
6
6
  * request is a discriminated union on `operation`; the client executes it
7
7
  * and POSTs the result back to `/v1/host-file-result`. `host_file_cancel`
8
8
  * withdraws an in-flight request.
@@ -32,7 +32,7 @@ export const NotificationIntentEventSchema = z.object({
32
32
  targetGuardianPrincipalId: z.string().optional(),
33
33
  silent: z.boolean().optional(),
34
34
  /**
35
- * True when the platform (APNs) channel accepted a remote push for
35
+ * True when the cloud (APNs) channel accepted a remote push for
36
36
  * this delivery, so native clients can avoid double-bannering.
37
37
  */
38
38
  remotePushDispatched: z.boolean().optional(),
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * `show_platform_login` SSE event.
3
3
  *
4
- * Emitted by the platform-connect route when no cloud credentials are
4
+ * Emitted by the cloud-connect route when no cloud credentials are
5
5
  * stored yet, signalling connected clients to surface the cloud login UI.
6
6
  *
7
7
  * Canonical wire-contract source. Daemon code imports the type
@@ -11,10 +11,8 @@
11
11
 
12
12
  import { z } from "zod";
13
13
 
14
- export const ShowPlatformLoginEventSchema = z.object({
14
+ export const ShowCloudLoginEventSchema = z.object({
15
15
  type: z.literal("show_platform_login"),
16
16
  });
17
17
 
18
- export type ShowPlatformLoginEvent = z.infer<
19
- typeof ShowPlatformLoginEventSchema
20
- >;
18
+ export type ShowCloudLoginEvent = z.infer<typeof ShowCloudLoginEventSchema>;
@@ -30,6 +30,7 @@ import { BackgroundToolStartedEventSchema } from "./events/background-tool-start
30
30
  import { BookmarkCreatedEventSchema } from "./events/bookmark-created.js";
31
31
  import { BookmarkDeletedEventSchema } from "./events/bookmark-deleted.js";
32
32
  import { ClientSettingsUpdateEventSchema } from "./events/client-settings-update.js";
33
+ import { CloudDisconnectedEventSchema } from "./events/cloud-disconnected.js";
33
34
  import { CompactionCircuitClosedEventSchema } from "./events/compaction-circuit-closed.js";
34
35
  import { CompactionCircuitOpenEventSchema } from "./events/compaction-circuit-open.js";
35
36
  import { ConfigChangedEventSchema } from "./events/config-changed.js";
@@ -106,7 +107,6 @@ import { OAuthConnectResultEventSchema } from "./events/oauth-connect-result.js"
106
107
  import { OpenConversationEventSchema } from "./events/open-conversation.js";
107
108
  import { OpenPanelEventSchema } from "./events/open-panel.js";
108
109
  import { OpenUrlEventSchema } from "./events/open-url.js";
109
- import { PlatformDisconnectedEventSchema } from "./events/platform-disconnected.js";
110
110
  import { QuestionRequestEventSchema } from "./events/question-request.js";
111
111
  import {
112
112
  RecordingPauseEventSchema,
@@ -121,7 +121,7 @@ import { SecretRequestEventSchema } from "./events/secret-request.js";
121
121
  import { ServiceGroupUpdateCompleteEventSchema } from "./events/service-group-update-complete.js";
122
122
  import { ServiceGroupUpdateProgressEventSchema } from "./events/service-group-update-progress.js";
123
123
  import { ServiceGroupUpdateStartingEventSchema } from "./events/service-group-update-starting.js";
124
- import { ShowPlatformLoginEventSchema } from "./events/show-platform-login.js";
124
+ import { ShowCloudLoginEventSchema } from "./events/show-cloud-login.js";
125
125
  import { SkillStateChangedEventSchema } from "./events/skill-state-changed.js";
126
126
  import { SoundsConfigUpdatedEventSchema } from "./events/sounds-config-updated.js";
127
127
  import { SubagentEventEventSchema } from "./events/subagent-event.js";
@@ -276,6 +276,10 @@ export {
276
276
  type ClientSettingsUpdateEvent,
277
277
  ClientSettingsUpdateEventSchema,
278
278
  } from "./events/client-settings-update.js";
279
+ export {
280
+ type CloudDisconnectedEvent,
281
+ CloudDisconnectedEventSchema,
282
+ } from "./events/cloud-disconnected.js";
279
283
  export {
280
284
  type CompactionCircuitClosedEvent,
281
285
  CompactionCircuitClosedEventSchema,
@@ -541,10 +545,6 @@ export {
541
545
  OpenPanelEventSchema,
542
546
  } from "./events/open-panel.js";
543
547
  export { type OpenUrlEvent, OpenUrlEventSchema } from "./events/open-url.js";
544
- export {
545
- type PlatformDisconnectedEvent,
546
- PlatformDisconnectedEventSchema,
547
- } from "./events/platform-disconnected.js";
548
548
  export {
549
549
  type AnsweredQuestion,
550
550
  type AnsweredQuestionResponse,
@@ -604,9 +604,9 @@ export {
604
604
  ServiceGroupUpdateStartingEventSchema,
605
605
  } from "./events/service-group-update-starting.js";
606
606
  export {
607
- type ShowPlatformLoginEvent,
608
- ShowPlatformLoginEventSchema,
609
- } from "./events/show-platform-login.js";
607
+ type ShowCloudLoginEvent,
608
+ ShowCloudLoginEventSchema,
609
+ } from "./events/show-cloud-login.js";
610
610
  export {
611
611
  type SkillStateChangedEvent,
612
612
  SkillStateChangedEventSchema,
@@ -1094,7 +1094,7 @@ export const AssistantEventSchema = z.discriminatedUnion("type", [
1094
1094
  OpenConversationEventSchema,
1095
1095
  OpenPanelEventSchema,
1096
1096
  OpenUrlEventSchema,
1097
- PlatformDisconnectedEventSchema,
1097
+ CloudDisconnectedEventSchema,
1098
1098
  QuestionRequestEventSchema,
1099
1099
  RecordingPauseEventSchema,
1100
1100
  RecordingResumeEventSchema,
@@ -1107,7 +1107,7 @@ export const AssistantEventSchema = z.discriminatedUnion("type", [
1107
1107
  ServiceGroupUpdateCompleteEventSchema,
1108
1108
  ServiceGroupUpdateProgressEventSchema,
1109
1109
  ServiceGroupUpdateStartingEventSchema,
1110
- ShowPlatformLoginEventSchema,
1110
+ ShowCloudLoginEventSchema,
1111
1111
  SkillStateChangedEventSchema,
1112
1112
  SoundsConfigUpdatedEventSchema,
1113
1113
  SubagentEventEventSchema,
@@ -26,7 +26,7 @@
26
26
  "./error": "./src/error.ts",
27
27
  "./reactions": "./src/reactions.ts",
28
28
  "./guardian-requests": "./src/guardian-requests.ts",
29
- "./platform-credential": "./src/platform-credential.ts",
29
+ "./cloud-credential": "./src/cloud-credential.ts",
30
30
  "./plan-credit": "./src/plan-credit.ts",
31
31
  "./integration-categories": "./src/integration-categories.ts",
32
32
  "./mcp-oauth": "./src/mcp-oauth.ts"
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Wire contract for asking an assistant whether its stored platform-managed
2
+ * Wire contract for asking an assistant whether its stored cloud-managed
3
3
  * credential still authenticates.
4
4
  *
5
5
  * The daemon route is the authoritative serving side:
6
6
  * - `POST /v1/platform/verify-credential`
7
- * (`assistant/src/runtime/routes/platform-routes.ts`)
7
+ * (`assistant/src/runtime/routes/cloud-routes.ts`)
8
8
  *
9
9
  * The daemon's platform client produces the verdict, the route reports it,
10
10
  * and the `cadet` CLI reads it before deciding whether a stored key can be
@@ -15,26 +15,26 @@
15
15
  import { z } from "zod";
16
16
 
17
17
  /**
18
- * What the platform said about the stored credential, right now.
18
+ * What the cloud said about the stored credential, right now.
19
19
  *
20
- * - `valid`: the platform accepted it.
21
- * - `rejected`: the platform refused it (unauthorized or forbidden); the
20
+ * - `valid`: the cloud accepted it.
21
+ * - `rejected`: the cloud refused it (unauthorized or forbidden); the
22
22
  * credential needs replacing.
23
23
  * - `unknown`: the check itself could not run (no credential stored, the
24
24
  * platform unreachable, a server error). Not evidence either way.
25
25
  */
26
- export const PlatformCredentialVerificationStatusSchema = z.enum([
26
+ export const CloudCredentialVerificationStatusSchema = z.enum([
27
27
  "valid",
28
28
  "rejected",
29
29
  "unknown",
30
30
  ]);
31
- export type PlatformCredentialVerificationStatus = z.infer<
32
- typeof PlatformCredentialVerificationStatusSchema
31
+ export type CloudCredentialVerificationStatus = z.infer<
32
+ typeof CloudCredentialVerificationStatusSchema
33
33
  >;
34
34
 
35
35
  /** `POST /v1/platform/verify-credential` response body. */
36
36
  export const PlatformVerifyCredentialResponseSchema = z.object({
37
- status: PlatformCredentialVerificationStatusSchema,
37
+ status: CloudCredentialVerificationStatusSchema,
38
38
  });
39
39
  export type PlatformVerifyCredentialResponse = z.infer<
40
40
  typeof PlatformVerifyCredentialResponseSchema
@@ -15,9 +15,9 @@
15
15
  * Format: `local_oauth:<providerKey>/<connectionId>` where providerKey
16
16
  * is the bare provider name (e.g. `google`).
17
17
  *
18
- * 3. **Managed OAuth** — references an OAuth connection managed by the
18
+ * 3. **Cloud OAuth** — references an OAuth connection managed by the
19
19
  * platform. Format: `platform_oauth:<connectionId>` where connectionId
20
- * is the platform-assigned connection identifier.
20
+ * is the cloud-assigned connection identifier.
21
21
  */
22
22
 
23
23
  import { z } from "zod";
@@ -96,7 +96,7 @@ export function localOAuthHandle(
96
96
  }
97
97
 
98
98
  /**
99
- * Build a managed (platform) OAuth credential handle from a connection ID.
99
+ * Build a cloud (platform) OAuth credential handle from a connection ID.
100
100
  */
101
101
  export function platformOAuthHandle(connectionId: string): string {
102
102
  return `${HandleType.PlatformOAuth}:${connectionId}`;
@@ -31,7 +31,7 @@ export * from "./no-response.js";
31
31
  export * from "./plan-credit.js";
32
32
  export * from "./integration-categories.js";
33
33
  export * from "./mcp-oauth.js";
34
- export * from "./platform-credential.js";
34
+ export * from "./cloud-credential.js";
35
35
  export * from "./remote-web-pairing.js";
36
36
  export * from "./twilio-ingress.js";
37
37
  export * from "./url-normalization.js";
@@ -4,7 +4,7 @@
4
4
  * `{env}-cloud.mycadet.ai` → `tunnel-{env}.mycadet.ai`). Returns null for
5
5
  * hosts outside that convention (localhost, custom domains). Shared by the
6
6
  * gateway speech relay and the web live-voice client so the two ends of the
7
- * managed-speech transport can't drift.
7
+ * cloud-speech transport can't drift.
8
8
  */
9
9
  export function tunnelHostForPlatformHost(host: string): string | null {
10
10
  if (host === "cloud.mycadet.ai") {
@@ -152,7 +152,7 @@ export const DEFAULT_REMOTE_WEB_PAIRING_PLATFORM: RemoteWebPairingPlatform =
152
152
 
153
153
  /**
154
154
  * A requested platform coerced to a known value. The pairing-token route is
155
- * publicly reachable and the platform renders verbatim in the host's
155
+ * publicly reachable and the cloud renders verbatim in the host's
156
156
  * paired-devices list, so an unrecognized value never reaches the DB.
157
157
  */
158
158
  export function resolveRemoteWebPairingPlatform(
@@ -34,7 +34,7 @@ import { RpcErrorSchema } from "./error.js";
34
34
 
35
35
  export const CesRpcMethod = {
36
36
  /** Push an updated assistant credential to CES after post-hatch provisioning. */
37
- UpdateManagedCredential: "update_managed_credential",
37
+ UpdateCloudCredential: "update_managed_credential",
38
38
  /** Retrieve a single credential by account name. */
39
39
  GetCredential: "get_credential",
40
40
  /** Store or update a credential by account name. */
@@ -63,7 +63,7 @@ export type CesRpcMethod = (typeof CesRpcMethod)[keyof typeof CesRpcMethod];
63
63
  // update_managed_credential
64
64
  // ---------------------------------------------------------------------------
65
65
 
66
- export const UpdateManagedCredentialSchema = z.object({
66
+ export const UpdateCloudCredentialSchema = z.object({
67
67
  /** The assistant API key to push to CES for platform credential materialization. */
68
68
  assistantApiKey: z.string(), // nosemgrep: not-a-secret
69
69
  /**
@@ -72,16 +72,16 @@ export const UpdateManagedCredentialSchema = z.object({
72
72
  */
73
73
  assistantId: z.string().optional(),
74
74
  });
75
- export type UpdateManagedCredential = z.infer<
76
- typeof UpdateManagedCredentialSchema
75
+ export type UpdateCloudCredential = z.infer<
76
+ typeof UpdateCloudCredentialSchema
77
77
  >;
78
78
 
79
- export const UpdateManagedCredentialResponseSchema = z.object({
80
- /** Whether the managed credential was successfully updated. */
79
+ export const UpdateCloudCredentialResponseSchema = z.object({
80
+ /** Whether the cloud credential was successfully updated. */
81
81
  updated: z.boolean(),
82
82
  });
83
- export type UpdateManagedCredentialResponse = z.infer<
84
- typeof UpdateManagedCredentialResponseSchema
83
+ export type UpdateCloudCredentialResponse = z.infer<
84
+ typeof UpdateCloudCredentialResponseSchema
85
85
  >;
86
86
 
87
87
  // ---------------------------------------------------------------------------
@@ -311,9 +311,9 @@ export type BulkSetCredentialRecordsResponse = z.infer<
311
311
  * schemas. Useful for building type-safe RPC dispatch layers.
312
312
  */
313
313
  export interface CesRpcContract {
314
- [CesRpcMethod.UpdateManagedCredential]: {
315
- request: UpdateManagedCredential;
316
- response: UpdateManagedCredentialResponse;
314
+ [CesRpcMethod.UpdateCloudCredential]: {
315
+ request: UpdateCloudCredential;
316
+ response: UpdateCloudCredentialResponse;
317
317
  };
318
318
  [CesRpcMethod.GetCredential]: {
319
319
  request: GetCredential;
@@ -361,9 +361,9 @@ export interface CesRpcContract {
361
361
  * Schema lookup map for runtime validation of RPC payloads.
362
362
  */
363
363
  export const CesRpcSchemas = {
364
- [CesRpcMethod.UpdateManagedCredential]: {
365
- request: UpdateManagedCredentialSchema,
366
- response: UpdateManagedCredentialResponseSchema,
364
+ [CesRpcMethod.UpdateCloudCredential]: {
365
+ request: UpdateCloudCredentialSchema,
366
+ response: UpdateCloudCredentialResponseSchema,
367
367
  },
368
368
  [CesRpcMethod.GetCredential]: {
369
369
  request: GetCredentialSchema,
@@ -15,7 +15,7 @@
15
15
  * - **URL**: tools whose candidates include a URL (`web_fetch`,
16
16
  * `network_request`).
17
17
  * - **Managed skill**: tools that manage first-party skill packages
18
- * (`scaffold_managed_skill`, `delete_managed_skill`).
18
+ * (`scaffold_cloud_skill`, `delete_cloud_skill`).
19
19
  * - **Skill load**: the `skill_load` tool, which uses a distinct candidate
20
20
  * namespace (`skill_load:selector` or `skill_load_dynamic:selector`).
21
21
  * - **Generic**: everything else (computer-use tools, UI surface tools,
@@ -58,8 +58,8 @@ export const URL_TOOLS = ["web_fetch", "network_request"] as const;
58
58
  * Tools that manage first-party skill packages (scaffold/delete).
59
59
  */
60
60
  export const MANAGED_SKILL_TOOLS = [
61
- "scaffold_managed_skill",
62
- "delete_managed_skill",
61
+ "scaffold_cloud_skill",
62
+ "delete_cloud_skill",
63
63
  ] as const;
64
64
 
65
65
  /**
@@ -89,8 +89,8 @@ export function isUrlRule(rule: { tool: string }): boolean {
89
89
  return URL_TOOLS_SET.has(rule.tool);
90
90
  }
91
91
 
92
- /** Returns true when the rule's tool belongs to the managed-skill-tool family. */
93
- export function isManagedSkillRule(rule: { tool: string }): boolean {
92
+ /** Returns true when the rule's tool belongs to the cloud-skill-tool family. */
93
+ export function isCloudSkillRule(rule: { tool: string }): boolean {
94
94
  return MANAGED_SKILL_TOOLS_SET.has(rule.tool);
95
95
  }
96
96
 
@@ -168,7 +168,7 @@ export type FeedItemGuardianRequest = z.infer<
168
168
  >;
169
169
 
170
170
  /**
171
- * One background rewrite of a managed skill, as a receipt item lists it.
171
+ * One background rewrite of a cloud skill, as a receipt item lists it.
172
172
  *
173
173
  * A receipt (`detailPanel.kind === "updatesList"`) collapses every skill
174
174
  * update a background pass made within one burst into a single feed item, and
@@ -277,7 +277,7 @@ const RequestedScopesSchema = z.preprocess(
277
277
  );
278
278
 
279
279
  export const OAuthConnectSurfaceDataSchema = z.object({
280
- /** OAuth provider key from the managed provider catalog, e.g. "google". */
280
+ /** OAuth provider key from the cloud provider catalog, e.g. "google". */
281
281
  providerKey: z
282
282
  .preprocess(
283
283
  (value) => (typeof value === "string" ? value.trim() : value),
@@ -285,9 +285,9 @@ export const OAuthConnectSurfaceDataSchema = z.object({
285
285
  )
286
286
  .catch(""),
287
287
  /**
288
- * Optional OAuth scopes to request for the managed connection. A full
289
- * replacement set: when present, the platform uses exactly these scopes
290
- * instead of its defaults (it does not merge). Omit to use the platform's
288
+ * Optional OAuth scopes to request for the cloud connection. A full
289
+ * replacement set: when present, the cloud uses exactly these scopes
290
+ * instead of its defaults (it does not merge). Omit to use the cloud's
291
291
  * default scopes for the provider.
292
292
  */
293
293
  requestedScopes: RequestedScopesSchema,
@@ -246,7 +246,7 @@ describe("notificationAvatarGeometry", () => {
246
246
  });
247
247
 
248
248
  describe("the transport contract", () => {
249
- test("caps a notification PNG at 128 KB for the platform sync", () => {
249
+ test("caps a notification PNG at 128 KB for the cloud sync", () => {
250
250
  expect(NOTIFICATION_AVATAR_MAX_BYTES).toBe(128 * 1024);
251
251
  });
252
252
 
@@ -30,7 +30,7 @@ export const NOTIFICATION_AVATAR_FALLBACK_DISC_HEX = "#ECEFEA";
30
30
  const ACCENT_MIX = 0.14;
31
31
 
32
32
  /**
33
- * Largest notification PNG the platform sync ships, in bytes. It bounds the
33
+ * Largest notification PNG the cloud sync ships, in bytes. It bounds the
34
34
  * `notification_avatar_base64` field of the PATCH that uploads the disc, which
35
35
  * is what APNs and FCM later hand their clients a URL and a hash for. A
36
36
  * photographic avatar is quantised (or dropped) to fit.
@@ -118,7 +118,7 @@ function px(value: number): string {
118
118
  * edge is the hard boundary no matter how far a cover-crop overflows.
119
119
  *
120
120
  * The `<image href="data:...">` shape is the one `downscaleRaster()` in
121
- * `assistant/src/platform/sync-avatar.ts` already feeds resvg, so the daemon's
121
+ * `assistant/src/cloud/sync-avatar.ts` already feeds resvg, so the daemon's
122
122
  * rasterizer is known to render it.
123
123
  */
124
124
  export function notificationAvatarSvg({
@@ -64,12 +64,12 @@ export function cloudAssistantHubUrl(envName: string | undefined): string {
64
64
  export const SEEDS: Record<string, EnvironmentDefinition> = {
65
65
  production: {
66
66
  name: "production",
67
- platformUrl: "https://cloud.mycadet.ai",
67
+ cloudUrl: "https://cloud.mycadet.ai",
68
68
  webUrl: "https://mycadet.ai",
69
69
  },
70
70
  staging: {
71
71
  name: "staging",
72
- platformUrl: "https://staging-cloud.mycadet.ai",
72
+ cloudUrl: "https://staging-cloud.mycadet.ai",
73
73
  webUrl: "https://staging.mycadet.ai",
74
74
  portsOverride: portBlock(17000),
75
75
  },
@@ -77,21 +77,21 @@ export const SEEDS: Record<string, EnvironmentDefinition> = {
77
77
  name: "test",
78
78
  // Non-functional URL — used only by unit tests for URL resolution, never
79
79
  // hit in production.
80
- platformUrl: "https://test-cloud.mycadet.ai",
80
+ cloudUrl: "https://test-cloud.mycadet.ai",
81
81
  webUrl: "https://dev.mycadet.ai",
82
82
  portsOverride: portBlock(19000),
83
83
  },
84
84
  dev: {
85
85
  name: "dev",
86
- platformUrl: "https://dev-cloud.mycadet.ai",
86
+ cloudUrl: "https://dev-cloud.mycadet.ai",
87
87
  webUrl: "https://dev.mycadet.ai",
88
88
  portsOverride: portBlock(18000),
89
89
  },
90
90
  local: {
91
91
  name: "local",
92
- platformUrl: "http://localhost:8000",
92
+ cloudUrl: "http://localhost:8000",
93
93
  webUrl: "http://localhost:3000",
94
- // assistantPlatformUrl: "http://host.docker.internal:8000",
94
+ // assistantCloudUrl: "http://host.docker.internal:8000",
95
95
  // ^ uncomment this once dockerized hatch path is live.
96
96
  // The assistant runs in a different network namespace than the host.
97
97
  portsOverride: portBlock(20000),
@@ -72,7 +72,7 @@ describe("buildShellSpawnFlags", () => {
72
72
  });
73
73
 
74
74
  describe("path list handling", () => {
75
- test("uses the platform delimiter", () => {
75
+ test("uses the cloud delimiter", () => {
76
76
  expect(pathListDelimiter("win32")).toBe(";");
77
77
  expect(pathListDelimiter("linux")).toBe(":");
78
78
  });
@@ -21,14 +21,14 @@ export interface PortMap {
21
21
 
22
22
  /**
23
23
  * A resolved environment definition. Required fields are `name` and
24
- * `platformUrl`. All other fields are optional and declared upfront — new
24
+ * `cloudUrl`. All other fields are optional and declared upfront — new
25
25
  * fields are additive, never breaking. `name` is intentionally typed as
26
26
  * `string` (not `keyof SEEDS`) so custom environments can be represented by
27
27
  * future layers (user config file, ad-hoc env vars, etc.).
28
28
  */
29
29
  export interface EnvironmentDefinition {
30
30
  name: string;
31
- platformUrl: string;
31
+ cloudUrl: string;
32
32
 
33
33
  /**
34
34
  * The web app (Next.js) base URL for browser-facing pages like
@@ -41,13 +41,13 @@ export interface EnvironmentDefinition {
41
41
  webUrl: string;
42
42
 
43
43
  /**
44
- * Override for the platform URL the assistant process itself uses. Only
45
- * differs from `platformUrl` when the assistant runs in a different network
44
+ * Override for the cloud URL the assistant process itself uses. Only
45
+ * differs from `cloudUrl` when the assistant runs in a different network
46
46
  * namespace than the host (e.g. Docker on macOS, where the host's localhost
47
- * is reached via `host.docker.internal`). Falls back to `platformUrl` when
47
+ * is reached via `host.docker.internal`). Falls back to `cloudUrl` when
48
48
  * unset.
49
49
  */
50
- assistantPlatformUrl?: string;
50
+ assistantCloudUrl?: string;
51
51
 
52
52
  /** Human-readable label for UI surfaces. */
53
53
  displayName?: string;
@@ -246,7 +246,7 @@ describe("notificationAvatarGeometry", () => {
246
246
  });
247
247
 
248
248
  describe("the transport contract", () => {
249
- test("caps a notification PNG at 128 KB for the platform sync", () => {
249
+ test("caps a notification PNG at 128 KB for the cloud sync", () => {
250
250
  expect(NOTIFICATION_AVATAR_MAX_BYTES).toBe(128 * 1024);
251
251
  });
252
252
 
@@ -30,7 +30,7 @@ export const NOTIFICATION_AVATAR_FALLBACK_DISC_HEX = "#ECEFEA";
30
30
  const ACCENT_MIX = 0.14;
31
31
 
32
32
  /**
33
- * Largest notification PNG the platform sync ships, in bytes. It bounds the
33
+ * Largest notification PNG the cloud sync ships, in bytes. It bounds the
34
34
  * `notification_avatar_base64` field of the PATCH that uploads the disc, which
35
35
  * is what APNs and FCM later hand their clients a URL and a hash for. A
36
36
  * photographic avatar is quantised (or dropped) to fit.
@@ -118,7 +118,7 @@ function px(value: number): string {
118
118
  * edge is the hard boundary no matter how far a cover-crop overflows.
119
119
  *
120
120
  * The `<image href="data:...">` shape is the one `downscaleRaster()` in
121
- * `assistant/src/platform/sync-avatar.ts` already feeds resvg, so the daemon's
121
+ * `assistant/src/cloud/sync-avatar.ts` already feeds resvg, so the daemon's
122
122
  * rasterizer is known to render it.
123
123
  */
124
124
  export function notificationAvatarSvg({
@@ -64,12 +64,12 @@ export function cloudAssistantHubUrl(envName: string | undefined): string {
64
64
  export const SEEDS: Record<string, EnvironmentDefinition> = {
65
65
  production: {
66
66
  name: "production",
67
- platformUrl: "https://cloud.mycadet.ai",
67
+ cloudUrl: "https://cloud.mycadet.ai",
68
68
  webUrl: "https://mycadet.ai",
69
69
  },
70
70
  staging: {
71
71
  name: "staging",
72
- platformUrl: "https://staging-cloud.mycadet.ai",
72
+ cloudUrl: "https://staging-cloud.mycadet.ai",
73
73
  webUrl: "https://staging.mycadet.ai",
74
74
  portsOverride: portBlock(17000),
75
75
  },
@@ -77,21 +77,21 @@ export const SEEDS: Record<string, EnvironmentDefinition> = {
77
77
  name: "test",
78
78
  // Non-functional URL — used only by unit tests for URL resolution, never
79
79
  // hit in production.
80
- platformUrl: "https://test-cloud.mycadet.ai",
80
+ cloudUrl: "https://test-cloud.mycadet.ai",
81
81
  webUrl: "https://dev.mycadet.ai",
82
82
  portsOverride: portBlock(19000),
83
83
  },
84
84
  dev: {
85
85
  name: "dev",
86
- platformUrl: "https://dev-cloud.mycadet.ai",
86
+ cloudUrl: "https://dev-cloud.mycadet.ai",
87
87
  webUrl: "https://dev.mycadet.ai",
88
88
  portsOverride: portBlock(18000),
89
89
  },
90
90
  local: {
91
91
  name: "local",
92
- platformUrl: "http://localhost:8000",
92
+ cloudUrl: "http://localhost:8000",
93
93
  webUrl: "http://localhost:3000",
94
- // assistantPlatformUrl: "http://host.docker.internal:8000",
94
+ // assistantCloudUrl: "http://host.docker.internal:8000",
95
95
  // ^ uncomment this once dockerized hatch path is live.
96
96
  // The assistant runs in a different network namespace than the host.
97
97
  portsOverride: portBlock(20000),
@@ -72,7 +72,7 @@ describe("buildShellSpawnFlags", () => {
72
72
  });
73
73
 
74
74
  describe("path list handling", () => {
75
- test("uses the platform delimiter", () => {
75
+ test("uses the cloud delimiter", () => {
76
76
  expect(pathListDelimiter("win32")).toBe(";");
77
77
  expect(pathListDelimiter("linux")).toBe(":");
78
78
  });