@gitpod/gitpod-protocol 0.1.5-vn-jetbrains-backend-plugin-223.6 → 0.1.5-wk-inte-test-20230117000019.1

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 (290) hide show
  1. package/data/gitpod-schema.json +16 -0
  2. package/lib/accounting-protocol.d.ts +1 -1
  3. package/lib/accounting-protocol.js +1 -1
  4. package/lib/admin-protocol.d.ts +11 -2
  5. package/lib/admin-protocol.d.ts.map +1 -1
  6. package/lib/admin-protocol.js +1 -1
  7. package/lib/admin-protocol.js.map +1 -1
  8. package/lib/analytics.d.ts +1 -1
  9. package/lib/analytics.js +1 -1
  10. package/lib/attribution.d.ts +5 -1
  11. package/lib/attribution.d.ts.map +1 -1
  12. package/lib/attribution.js +15 -1
  13. package/lib/attribution.js.map +1 -1
  14. package/lib/auth.d.ts +1 -1
  15. package/lib/auth.js +1 -1
  16. package/lib/billing-mode.d.ts +5 -1
  17. package/lib/billing-mode.d.ts.map +1 -1
  18. package/lib/billing-mode.js +1 -1
  19. package/lib/blocked-repositories-protocol.d.ts +1 -1
  20. package/lib/blocked-repositories-protocol.js +1 -1
  21. package/lib/context-url.d.ts +1 -2
  22. package/lib/context-url.d.ts.map +1 -1
  23. package/lib/context-url.js +1 -3
  24. package/lib/context-url.js.map +1 -1
  25. package/lib/context-url.spec.d.ts +1 -3
  26. package/lib/context-url.spec.d.ts.map +1 -1
  27. package/lib/context-url.spec.js +1 -29
  28. package/lib/context-url.spec.js.map +1 -1
  29. package/lib/encryption/container-module.d.ts +1 -1
  30. package/lib/encryption/container-module.js +1 -1
  31. package/lib/encryption/encryption-engine.d.ts +1 -1
  32. package/lib/encryption/encryption-engine.js +1 -1
  33. package/lib/encryption/encryption-engine.spec.d.ts +1 -1
  34. package/lib/encryption/encryption-engine.spec.js +1 -1
  35. package/lib/encryption/encryption-service.d.ts +1 -1
  36. package/lib/encryption/encryption-service.js +1 -1
  37. package/lib/encryption/key-provider.d.ts +1 -1
  38. package/lib/encryption/key-provider.js +1 -1
  39. package/lib/env.d.ts +1 -1
  40. package/lib/env.d.ts.map +1 -1
  41. package/lib/env.js +1 -1
  42. package/lib/env.js.map +1 -1
  43. package/lib/experiments/always-default.d.ts +1 -1
  44. package/lib/experiments/configcat-server.d.ts +1 -1
  45. package/lib/experiments/configcat-server.d.ts.map +1 -1
  46. package/lib/experiments/configcat-server.js +2 -1
  47. package/lib/experiments/configcat-server.js.map +1 -1
  48. package/lib/experiments/configcat.d.ts +1 -3
  49. package/lib/experiments/configcat.d.ts.map +1 -1
  50. package/lib/experiments/configcat.js +2 -8
  51. package/lib/experiments/configcat.js.map +1 -1
  52. package/lib/experiments/types.d.ts +1 -3
  53. package/lib/experiments/types.d.ts.map +1 -1
  54. package/lib/experiments/types.js +1 -1
  55. package/lib/experiments/types.js.map +1 -1
  56. package/lib/frontend-dashboard-service.d.ts +85 -0
  57. package/lib/frontend-dashboard-service.d.ts.map +1 -0
  58. package/lib/frontend-dashboard-service.js +32 -0
  59. package/lib/frontend-dashboard-service.js.map +1 -0
  60. package/lib/gitpod-file-parser.d.ts +1 -1
  61. package/lib/gitpod-file-parser.js +1 -1
  62. package/lib/gitpod-file-parser.spec.d.ts +1 -1
  63. package/lib/gitpod-file-parser.spec.js +1 -1
  64. package/lib/gitpod-service.d.ts +17 -22
  65. package/lib/gitpod-service.d.ts.map +1 -1
  66. package/lib/gitpod-service.js +1 -1
  67. package/lib/gitpod-service.js.map +1 -1
  68. package/lib/headless-workspace-log.d.ts +1 -1
  69. package/lib/headless-workspace-log.js +1 -1
  70. package/lib/ide-frontend-service.d.ts +1 -1
  71. package/lib/ide-frontend-service.js +1 -1
  72. package/lib/ide-protocol.d.ts +15 -2
  73. package/lib/ide-protocol.d.ts.map +1 -1
  74. package/lib/ide-protocol.js +11 -1
  75. package/lib/ide-protocol.js.map +1 -1
  76. package/lib/index.d.ts +1 -1
  77. package/lib/index.js +1 -1
  78. package/lib/installation-admin-protocol.d.ts +1 -1
  79. package/lib/installation-admin-protocol.js +1 -1
  80. package/lib/license-protocol.d.ts +1 -1
  81. package/lib/license-protocol.js +1 -1
  82. package/lib/messaging/browser/window-connection.d.ts +1 -1
  83. package/lib/messaging/browser/window-connection.js +1 -1
  84. package/lib/messaging/client-call-metrics.d.ts +3 -1
  85. package/lib/messaging/client-call-metrics.d.ts.map +1 -1
  86. package/lib/messaging/client-call-metrics.js +14 -1
  87. package/lib/messaging/client-call-metrics.js.map +1 -1
  88. package/lib/messaging/error.d.ts +3 -1
  89. package/lib/messaging/error.d.ts.map +1 -1
  90. package/lib/messaging/error.js +5 -1
  91. package/lib/messaging/error.js.map +1 -1
  92. package/lib/oss-allowlist.d.ts +1 -1
  93. package/lib/oss-allowlist.js +1 -1
  94. package/lib/payment-protocol.d.ts +1 -1
  95. package/lib/payment-protocol.js +1 -1
  96. package/lib/permission.d.ts +1 -1
  97. package/lib/permission.js +1 -1
  98. package/lib/plans.d.ts +1 -1
  99. package/lib/plans.js +3 -3
  100. package/lib/plans.js.map +1 -1
  101. package/lib/protocol.d.ts +22 -37
  102. package/lib/protocol.d.ts.map +1 -1
  103. package/lib/protocol.js +11 -19
  104. package/lib/protocol.js.map +1 -1
  105. package/lib/protocol.spec.d.ts +1 -1
  106. package/lib/protocol.spec.js +1 -1
  107. package/lib/snapshot-url.d.ts +1 -1
  108. package/lib/snapshot-url.js +1 -1
  109. package/lib/snapshot-url.spec.d.ts +1 -1
  110. package/lib/snapshot-url.spec.js +1 -1
  111. package/lib/team-subscription-protocol.d.ts +1 -1
  112. package/lib/team-subscription-protocol.js +1 -1
  113. package/lib/teams-projects-protocol.d.ts +9 -3
  114. package/lib/teams-projects-protocol.d.ts.map +1 -1
  115. package/lib/teams-projects-protocol.js +9 -2
  116. package/lib/teams-projects-protocol.js.map +1 -1
  117. package/lib/typings/globals.d.ts +2 -1
  118. package/lib/typings/globals.d.ts.map +1 -1
  119. package/lib/typings/globals.js +1 -1
  120. package/lib/usage.d.ts +13 -1
  121. package/lib/usage.d.ts.map +1 -1
  122. package/lib/usage.js +8 -2
  123. package/lib/usage.js.map +1 -1
  124. package/lib/util/analytics.d.ts +1 -1
  125. package/lib/util/analytics.js +1 -1
  126. package/lib/util/async-iterator.d.ts +1 -1
  127. package/lib/util/async-iterator.js +1 -1
  128. package/lib/util/cancelable.d.ts +1 -1
  129. package/lib/util/cancelable.js +1 -1
  130. package/lib/util/date-time.d.ts +1 -1
  131. package/lib/util/date-time.js +1 -1
  132. package/lib/util/debug-app.d.ts +1 -1
  133. package/lib/util/debug-app.js +1 -1
  134. package/lib/util/deep-partial.d.ts +1 -1
  135. package/lib/util/deep-partial.js +1 -1
  136. package/lib/util/deferred.d.ts +1 -1
  137. package/lib/util/deferred.js +1 -1
  138. package/lib/util/garbage-collected-cache.d.ts +1 -1
  139. package/lib/util/garbage-collected-cache.js +1 -1
  140. package/lib/util/generate-workspace-id.d.ts +1 -1
  141. package/lib/util/generate-workspace-id.js +1 -1
  142. package/lib/util/generate-workspace-id.spec.d.ts +1 -1
  143. package/lib/util/generate-workspace-id.spec.js +1 -1
  144. package/lib/util/gitpod-cookie.d.ts +1 -1
  145. package/lib/util/gitpod-cookie.js +1 -1
  146. package/lib/util/gitpod-host-url.d.ts +9 -3
  147. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  148. package/lib/util/gitpod-host-url.js +22 -8
  149. package/lib/util/gitpod-host-url.js.map +1 -1
  150. package/lib/util/gitpod-host-url.spec.d.ts +1 -1
  151. package/lib/util/gitpod-host-url.spec.js +1 -1
  152. package/lib/util/grpc.d.ts +2 -1
  153. package/lib/util/grpc.d.ts.map +1 -1
  154. package/lib/util/grpc.js +1 -1
  155. package/lib/util/grpc.js.map +1 -1
  156. package/lib/util/jaeger-client-types.d.ts +1 -1
  157. package/lib/util/jaeger-client-types.js +1 -1
  158. package/lib/util/logging.d.ts +1 -1
  159. package/lib/util/logging.js +1 -1
  160. package/lib/util/logging.spec.d.ts +1 -1
  161. package/lib/util/logging.spec.js +1 -1
  162. package/lib/util/make-link.d.ts +1 -1
  163. package/lib/util/make-link.js +1 -1
  164. package/lib/util/nice-grpc.d.ts +9 -0
  165. package/lib/util/nice-grpc.d.ts.map +1 -0
  166. package/lib/util/nice-grpc.js +121 -0
  167. package/lib/util/nice-grpc.js.map +1 -0
  168. package/lib/util/parse-workspace-id.d.ts +1 -1
  169. package/lib/util/parse-workspace-id.js +1 -1
  170. package/lib/util/parse-workspace-id.spec.d.ts +1 -1
  171. package/lib/util/parse-workspace-id.spec.js +1 -1
  172. package/lib/util/queue.d.ts +1 -1
  173. package/lib/util/queue.js +1 -1
  174. package/lib/util/queue.spec.d.ts +1 -1
  175. package/lib/util/queue.spec.js +1 -1
  176. package/lib/util/repeat.d.ts +1 -1
  177. package/lib/util/repeat.js +1 -1
  178. package/lib/util/semaphore.d.ts +1 -1
  179. package/lib/util/semaphore.js +1 -1
  180. package/lib/util/skip-if.d.ts +1 -1
  181. package/lib/util/skip-if.js +1 -1
  182. package/lib/util/timeutil.d.ts +1 -1
  183. package/lib/util/timeutil.js +1 -1
  184. package/lib/util/timeutil.spec.d.ts +1 -1
  185. package/lib/util/timeutil.spec.js +1 -1
  186. package/lib/util/tracing.d.ts +1 -1
  187. package/lib/util/tracing.js +1 -1
  188. package/lib/util/tracing.spec.d.ts +1 -1
  189. package/lib/util/tracing.spec.js +1 -1
  190. package/lib/util/workspace-port-authentication.d.ts +1 -1
  191. package/lib/util/workspace-port-authentication.js +1 -1
  192. package/lib/webhook-event.d.ts +1 -1
  193. package/lib/webhook-event.js +1 -1
  194. package/lib/workspace-class.d.ts +2 -2
  195. package/lib/workspace-class.d.ts.map +1 -1
  196. package/lib/workspace-class.js +1 -1
  197. package/lib/workspace-cluster.d.ts +7 -6
  198. package/lib/workspace-cluster.d.ts.map +1 -1
  199. package/lib/workspace-cluster.js +1 -1
  200. package/lib/workspace-cluster.js.map +1 -1
  201. package/lib/workspace-instance.d.ts +2 -1
  202. package/lib/workspace-instance.d.ts.map +1 -1
  203. package/lib/workspace-instance.js +1 -1
  204. package/lib/wsready.d.ts +10 -4
  205. package/lib/wsready.d.ts.map +1 -1
  206. package/lib/wsready.js +3 -1
  207. package/lib/wsready.js.map +1 -1
  208. package/package.json +3 -1
  209. package/pkg-yarn.lock +3 -1
  210. package/provenance-bundle.jsonl +1 -1
  211. package/src/accounting-protocol.ts +1 -1
  212. package/src/admin-protocol.ts +15 -2
  213. package/src/analytics.ts +1 -1
  214. package/src/attribution.ts +16 -1
  215. package/src/auth.ts +1 -1
  216. package/src/billing-mode.ts +8 -1
  217. package/src/blocked-repositories-protocol.ts +1 -1
  218. package/src/context-url.spec.ts +1 -19
  219. package/src/context-url.ts +1 -3
  220. package/src/encryption/container-module.ts +1 -1
  221. package/src/encryption/encryption-engine.spec.ts +1 -1
  222. package/src/encryption/encryption-engine.ts +1 -1
  223. package/src/encryption/encryption-service.ts +1 -1
  224. package/src/encryption/key-provider.ts +1 -1
  225. package/src/env.ts +2 -3
  226. package/src/experiments/always-default.ts +1 -1
  227. package/src/experiments/configcat-server.ts +2 -1
  228. package/src/experiments/configcat.ts +1 -7
  229. package/src/experiments/types.ts +1 -5
  230. package/src/frontend-dashboard-service.ts +109 -0
  231. package/src/gitpod-file-parser.spec.ts +1 -1
  232. package/src/gitpod-file-parser.ts +1 -1
  233. package/src/gitpod-service.ts +20 -26
  234. package/src/headless-workspace-log.ts +1 -1
  235. package/src/ide-frontend-service.ts +1 -1
  236. package/src/ide-protocol.ts +20 -2
  237. package/src/index.ts +1 -1
  238. package/src/installation-admin-protocol.ts +1 -1
  239. package/src/license-protocol.ts +1 -1
  240. package/src/messaging/browser/window-connection.ts +1 -1
  241. package/src/messaging/client-call-metrics.ts +18 -1
  242. package/src/messaging/error.ts +7 -1
  243. package/src/oss-allowlist.ts +1 -1
  244. package/src/payment-protocol.ts +1 -1
  245. package/src/permission.ts +1 -1
  246. package/src/plans.ts +3 -3
  247. package/src/protocol.spec.ts +1 -1
  248. package/src/protocol.ts +30 -49
  249. package/src/snapshot-url.spec.ts +1 -1
  250. package/src/snapshot-url.ts +1 -1
  251. package/src/team-subscription-protocol.ts +1 -1
  252. package/src/teams-projects-protocol.ts +15 -4
  253. package/src/typings/globals.ts +3 -1
  254. package/src/usage.ts +15 -1
  255. package/src/util/analytics.ts +1 -1
  256. package/src/util/async-iterator.ts +1 -1
  257. package/src/util/cancelable.ts +1 -1
  258. package/src/util/date-time.ts +1 -1
  259. package/src/util/debug-app.ts +1 -1
  260. package/src/util/deep-partial.ts +1 -1
  261. package/src/util/deferred.ts +1 -1
  262. package/src/util/garbage-collected-cache.ts +1 -1
  263. package/src/util/generate-workspace-id.spec.ts +1 -1
  264. package/src/util/generate-workspace-id.ts +1 -1
  265. package/src/util/gitpod-cookie.ts +1 -1
  266. package/src/util/gitpod-host-url.spec.ts +1 -1
  267. package/src/util/gitpod-host-url.ts +27 -8
  268. package/src/util/grpc.ts +4 -1
  269. package/src/util/jaeger-client-types.ts +1 -1
  270. package/src/util/logging.spec.ts +1 -1
  271. package/src/util/logging.ts +1 -1
  272. package/src/util/make-link.ts +1 -1
  273. package/src/util/nice-grpc.ts +96 -0
  274. package/src/util/parse-workspace-id.spec.ts +1 -1
  275. package/src/util/parse-workspace-id.ts +1 -1
  276. package/src/util/queue.spec.ts +1 -1
  277. package/src/util/queue.ts +1 -1
  278. package/src/util/repeat.ts +1 -1
  279. package/src/util/semaphore.ts +1 -1
  280. package/src/util/skip-if.ts +1 -1
  281. package/src/util/timeutil.spec.ts +1 -1
  282. package/src/util/timeutil.ts +1 -1
  283. package/src/util/tracing.spec.ts +1 -1
  284. package/src/util/tracing.ts +1 -1
  285. package/src/util/workspace-port-authentication.ts +1 -1
  286. package/src/webhook-event.ts +1 -1
  287. package/src/workspace-class.ts +2 -2
  288. package/src/workspace-cluster.ts +12 -7
  289. package/src/workspace-instance.ts +7 -1
  290. package/src/wsready.ts +12 -6
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { injectable, inject } from "inversify";
package/src/env.ts CHANGED
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { injectable } from "inversify";
8
8
 
9
9
  @injectable()
10
- export abstract class AbstractComponentEnv {
11
- }
10
+ export abstract class AbstractComponentEnv {}
12
11
 
13
12
  export function getEnvVar(name: string, defaultValue?: string): string {
14
13
  const value = process.env[name] || defaultValue;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
  import { Attributes, Client } from "./types";
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { Client } from "./types";
@@ -32,6 +32,7 @@ export function getExperimentsClientForBackend(): Client {
32
32
 
33
33
  const configCatClient = configcat.createClient(sdkKey, {
34
34
  pollIntervalSeconds: 3 * 60, // 3 minutes
35
+ requestTimeoutMs: 2000,
35
36
  logger: configcat.createConsoleLogger(LogLevel.Error),
36
37
  maxInitWaitTimeSeconds: 0,
37
38
  });
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { Attributes, Client } from "./types";
@@ -12,9 +12,7 @@ import { User } from "../protocol";
12
12
  export const USER_ID_ATTRIBUTE = "user_id";
13
13
  export const PROJECT_ID_ATTRIBUTE = "project_id";
14
14
  export const TEAM_ID_ATTRIBUTE = "team_id";
15
- export const TEAM_IDS_ATTRIBUTE = "team_ids";
16
15
  export const TEAM_NAME_ATTRIBUTE = "team_name";
17
- export const TEAM_NAMES_ATTRIBUTE = "team_names";
18
16
  export const BILLING_TIER_ATTRIBUTE = "billing_tier";
19
17
 
20
18
  export class ConfigCatClient implements Client {
@@ -50,10 +48,6 @@ export function attributesToUser(attributes: Attributes): ConfigCatUser {
50
48
  if (attributes.teamName) {
51
49
  custom[TEAM_NAME_ATTRIBUTE] = attributes.teamName;
52
50
  }
53
- if (attributes.teams) {
54
- custom[TEAM_NAMES_ATTRIBUTE] = attributes.teams.map((t) => t.name).join(",");
55
- custom[TEAM_IDS_ATTRIBUTE] = attributes.teams.map((t) => t.id).join(",");
56
- }
57
51
  if (attributes.billingTier) {
58
52
  custom[BILLING_TIER_ATTRIBUTE] = attributes.billingTier;
59
53
  }
@@ -1,11 +1,10 @@
1
1
  /**
2
2
  * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { BillingTier, User } from "../protocol";
8
- import { Team } from "../teams-projects-protocol";
9
8
 
10
9
  export const Client = Symbol("Client");
11
10
 
@@ -25,9 +24,6 @@ export interface Attributes {
25
24
  teamId?: string;
26
25
  // Currently selected Gitpod Team Name (mapped to "custom.team_name")
27
26
  teamName?: string;
28
-
29
- // All the Gitpod Teams that the user is a member (or owner) of (mapped to "custom.team_names" and "custom.team_ids")
30
- teams?: Team[];
31
27
  }
32
28
 
33
29
  export interface Client {
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Copyright (c) 2023 Gitpod GmbH. All rights reserved.
3
+ * Licensed under the GNU Affero General Public License (AGPL).
4
+ * See License.AGPL.txt in the project root for license information.
5
+ */
6
+
7
+ import { WorkspaceInstancePhase } from "./workspace-instance";
8
+ import { RemoteTrackMessage } from "./analytics";
9
+ import { Event } from "./util/event";
10
+
11
+ export namespace IDEFrontendDashboardService {
12
+ /**
13
+ * IClient is the client side which is using in supervisor frontend
14
+ */
15
+ export interface IClient extends IClientOn, IClientSend {}
16
+ interface IClientOn {
17
+ onStatusUpdate: Event<Status>;
18
+ relocate(url: string): void;
19
+ }
20
+ interface IClientSend {
21
+ trackEvent(msg: RemoteTrackMessage): void;
22
+ activeHeartbeat(): void;
23
+ setState(state: SetStateData): void;
24
+ }
25
+
26
+ /**
27
+ * IServer is the server side which is using in dashboard loading screen
28
+ */
29
+ export interface IServer extends IServerOn, IServerSend {
30
+ auth(): Promise<void>;
31
+ }
32
+ interface IServerOn {
33
+ onSetState: Event<SetStateData>;
34
+ trackEvent(msg: RemoteTrackMessage): void;
35
+ activeHeartbeat(): void;
36
+ }
37
+ interface IServerSend {
38
+ sendStatusUpdate(status: Status): void;
39
+ relocate(url: string): void;
40
+ }
41
+
42
+ export interface Status {
43
+ workspaceID: string;
44
+ loggedUserId: string;
45
+
46
+ instanceId?: string;
47
+ ideUrl?: string;
48
+ statusPhase?: WorkspaceInstancePhase;
49
+
50
+ workspaceDescription: string;
51
+ workspaceType: string;
52
+ }
53
+
54
+ export interface SetStateData {
55
+ ideFrontendFailureCause?: string;
56
+ desktopIDE?: {
57
+ clientID: string;
58
+ link: string;
59
+ label?: string;
60
+ };
61
+ }
62
+
63
+ /**
64
+ * interface for post message that send status update from dashboard to supervisor
65
+ */
66
+ export interface StatusUpdateEventData {
67
+ type: "ide-status-update";
68
+ status: Status;
69
+ }
70
+
71
+ export interface HeartbeatEventData {
72
+ type: "ide-heartbeat";
73
+ }
74
+
75
+ export interface TrackEventData {
76
+ type: "ide-track-event";
77
+ msg: RemoteTrackMessage;
78
+ }
79
+
80
+ export interface RelocateEventData {
81
+ type: "ide-relocate";
82
+ url: string;
83
+ }
84
+
85
+ export interface SetStateEventData {
86
+ type: "ide-set-state";
87
+ state: SetStateData;
88
+ }
89
+
90
+ export function isStatusUpdateEventData(obj: any): obj is StatusUpdateEventData {
91
+ return obj != null && typeof obj === "object" && obj.type === "ide-status-update";
92
+ }
93
+
94
+ export function isHeartbeatEventData(obj: any): obj is HeartbeatEventData {
95
+ return obj != null && typeof obj === "object" && obj.type === "ide-heartbeat";
96
+ }
97
+
98
+ export function isTrackEventData(obj: any): obj is TrackEventData {
99
+ return obj != null && typeof obj === "object" && obj.type === "ide-track-event";
100
+ }
101
+
102
+ export function isRelocateEventData(obj: any): obj is RelocateEventData {
103
+ return obj != null && typeof obj === "object" && obj.type === "ide-relocate";
104
+ }
105
+
106
+ export function isSetStateEventData(obj: any): obj is SetStateEventData {
107
+ return obj != null && typeof obj === "object" && obj.type === "ide-set-state";
108
+ }
109
+ }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { suite, test } from "mocha-typescript";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { injectable } from "inversify";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import {
@@ -12,7 +12,6 @@ import {
12
12
  WhitelistedRepository,
13
13
  WorkspaceImageBuild,
14
14
  AuthProviderInfo,
15
- CreateWorkspaceMode,
16
15
  Token,
17
16
  UserEnvVarValue,
18
17
  Terms,
@@ -27,6 +26,7 @@ import {
27
26
  PrebuiltWorkspace,
28
27
  UserSSHPublicKeyValue,
29
28
  SSHPublicKeyValue,
29
+ IDESettings,
30
30
  } from "./protocol";
31
31
  import {
32
32
  Team,
@@ -59,8 +59,7 @@ import {
59
59
  } from "./team-subscription-protocol";
60
60
  import { RemotePageMessage, RemoteTrackMessage, RemoteIdentifyMessage } from "./analytics";
61
61
  import { IDEServer } from "./ide-protocol";
62
- import { InstallationAdminSettings, TelemetryData } from "./installation-admin-protocol";
63
- import { ListUsageRequest, ListUsageResponse } from "./usage";
62
+ import { ListUsageRequest, ListUsageResponse, CostCenterJSON } from "./usage";
64
63
  import { SupportedWorkspaceClass } from "./workspace-class";
65
64
  import { BillingMode } from "./billing-mode";
66
65
 
@@ -165,6 +164,8 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
165
164
  deleteSSHPublicKey(id: string): Promise<void>;
166
165
 
167
166
  // Teams
167
+ getTeam(teamId: string): Promise<Team>;
168
+ updateTeam(teamId: string, team: Pick<Team, "name">): Promise<Team>;
168
169
  getTeams(): Promise<Team[]>;
169
170
  getTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
170
171
  createTeam(name: string): Promise<Team>;
@@ -173,12 +174,7 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
173
174
  removeTeamMember(teamId: string, userId: string): Promise<void>;
174
175
  getGenericInvite(teamId: string): Promise<TeamMembershipInvite>;
175
176
  resetGenericInvite(inviteId: string): Promise<TeamMembershipInvite>;
176
- deleteTeam(teamId: string, userId: string): Promise<void>;
177
-
178
- // Admin Settings
179
- adminGetSettings(): Promise<InstallationAdminSettings>;
180
- adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>;
181
- adminGetTelemetryData(): Promise<TelemetryData>;
177
+ deleteTeam(teamId: string): Promise<void>;
182
178
 
183
179
  // Projects
184
180
  getProviderRepositoriesForUser(params: GetProviderRepositoriesParams): Promise<ProviderRepository[]>;
@@ -227,16 +223,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
227
223
  */
228
224
  getSnapshots(workspaceID: string): Promise<string[]>;
229
225
 
230
- /**
231
- * stores/updates layout information for the given workspace
232
- */
233
- storeLayout(workspaceId: string, layoutData: string): Promise<void>;
234
-
235
- /**
236
- * retrieves layout information for the given workspace
237
- */
238
- getLayout(workspaceId: string): Promise<string | undefined>;
239
-
240
226
  guessGitTokenScopes(params: GuessGitTokenScopesParams): Promise<GuessedGitTokenScopes>;
241
227
 
242
228
  /**
@@ -288,14 +274,16 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
288
274
  getStripeSetupIntentClientSecret(): Promise<string>;
289
275
  findStripeSubscriptionId(attributionId: string): Promise<string | undefined>;
290
276
  createStripeCustomerIfNeeded(attributionId: string, currency: string): Promise<void>;
291
- subscribeToStripe(attributionId: string, setupIntentId: string): Promise<void>;
277
+ subscribeToStripe(attributionId: string, setupIntentId: string, usageLimit: number): Promise<number | undefined>;
292
278
  getStripePortalUrl(attributionId: string): Promise<string>;
293
- getUsageLimit(attributionId: string): Promise<number | undefined>;
279
+ getCostCenter(attributionId: string): Promise<CostCenterJSON | undefined>;
294
280
  setUsageLimit(attributionId: string, usageLimit: number): Promise<void>;
281
+ getUsageBalance(attributionId: string): Promise<number>;
295
282
 
296
283
  listUsage(req: ListUsageRequest): Promise<ListUsageResponse>;
297
284
 
298
285
  setUsageAttribution(usageAttribution: string): Promise<void>;
286
+ listAvailableUsageAttributionIds(): Promise<string[]>;
299
287
 
300
288
  getBillingModeForUser(): Promise<BillingMode>;
301
289
  getBillingModeForTeam(teamId: string): Promise<BillingMode>;
@@ -428,17 +416,23 @@ export namespace GitpodServer {
428
416
  export interface GetAccountStatementOptions {
429
417
  date?: string;
430
418
  }
431
- export interface CreateWorkspaceOptions {
419
+ export interface CreateWorkspaceOptions extends StartWorkspaceOptions {
432
420
  contextUrl: string;
433
- mode?: CreateWorkspaceMode;
421
+
422
+ // whether running workspaces on the same context should be ignored. If false (default) users will be asked.
423
+ ignoreRunningWorkspaceOnSameCommit?: boolean;
424
+ ignoreRunningPrebuild?: boolean;
425
+ allowUsingPreviousPrebuilds?: boolean;
434
426
  forceDefaultConfig?: boolean;
435
427
  }
428
+
436
429
  export interface StartWorkspaceOptions {
437
- forceDefaultImage: boolean;
430
+ forceDefaultImage?: boolean;
431
+ workspaceClass?: string;
432
+ ideSettings?: IDESettings;
438
433
  }
439
434
  export interface TakeSnapshotOptions {
440
435
  workspaceId: string;
441
- layoutData?: string;
442
436
  /* this is here to enable backwards-compatibility and untangling rollout between workspace, IDE and meta */
443
437
  dontWait?: boolean;
444
438
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  export enum HeadlessWorkspaceEventType {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { Event } from "./util/event";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  /**
@@ -36,6 +36,14 @@ export interface IDEOptions {
36
36
  clients?: { [id: string]: IDEClient };
37
37
  }
38
38
 
39
+ export namespace IDEOptions {
40
+ export function asArray(options: IDEOptions): (IDEOption & { id: string })[] {
41
+ return Object.keys(options.options)
42
+ .map((id) => ({ ...options.options[id], id }))
43
+ .sort((a, b) => (a.orderKey || "").localeCompare(b.orderKey || ""));
44
+ }
45
+ }
46
+
39
47
  export interface IDEClient {
40
48
  /**
41
49
  * The default desktop IDE when the user has not specified one.
@@ -87,7 +95,7 @@ export interface IDEOption {
87
95
  label?: string;
88
96
 
89
97
  /**
90
- * Notes to the IDE option that are renderd in the preferences when a user
98
+ * Notes to the IDE option that are rendered in the preferences when a user
91
99
  * chooses this IDE.
92
100
  */
93
101
  notes?: string[];
@@ -126,4 +134,14 @@ export interface IDEOption {
126
134
  * The latest plugin image ref for the latest IDE image, this image ref always resolve to digest.
127
135
  */
128
136
  pluginLatestImage?: string;
137
+
138
+ /**
139
+ * ImageVersion the semantic version of the IDE image.
140
+ */
141
+ imageVersion?: string;
142
+
143
+ /**
144
+ * LatestImageVersion the semantic version of the latest IDE image.
145
+ */
146
+ latestImageVersion?: string;
129
147
  }
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  export * from "./protocol";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { v4 as uuidv4 } from "uuid";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  export interface LicenseValidationResult {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { Message } from "vscode-jsonrpc/lib/messages";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { injectable } from "inversify";
@@ -14,6 +14,7 @@ export class PrometheusClientCallMetrics implements IClientCallMetrics {
14
14
  readonly sentCounter: prometheusClient.Counter<string>;
15
15
  readonly receivedCounter: prometheusClient.Counter<string>;
16
16
  readonly handledCounter: prometheusClient.Counter<string>;
17
+ readonly handledSecondsHistogram: prometheusClient.Histogram<string>;
17
18
 
18
19
  constructor() {
19
20
  this.startedCounter = new prometheusClient.Counter({
@@ -40,6 +41,12 @@ export class PrometheusClientCallMetrics implements IClientCallMetrics {
40
41
  labelNames: ["grpc_service", "grpc_method", "grpc_type", "grpc_code"],
41
42
  registers: [prometheusClient.register],
42
43
  });
44
+ this.handledSecondsHistogram = new prometheusClient.Histogram({
45
+ name: "grpc_client_handling_seconds",
46
+ help: "Histogram of response latency (seconds) of the gRPC until it is finished by the application.",
47
+ labelNames: ["grpc_service", "grpc_method", "grpc_type", "grpc_code"],
48
+ registers: [prometheusClient.register],
49
+ });
43
50
  }
44
51
 
45
52
  started(labels: IGrpcCallMetricsLabels): void {
@@ -74,4 +81,14 @@ export class PrometheusClientCallMetrics implements IClientCallMetrics {
74
81
  grpc_code: labels.code,
75
82
  });
76
83
  }
84
+
85
+ startHandleTimer(
86
+ labels: IGrpcCallMetricsLabelsWithCode,
87
+ ): (labels?: Partial<Record<string, string | number>> | undefined) => number {
88
+ return this.handledSecondsHistogram.startTimer({
89
+ grpc_service: labels.service,
90
+ grpc_method: labels.method,
91
+ grpc_type: labels.type,
92
+ });
93
+ }
77
94
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  export namespace ErrorCodes {
@@ -35,12 +35,18 @@ export namespace ErrorCodes {
35
35
  // 430 Repository not whitelisted (custom status code)
36
36
  export const REPOSITORY_NOT_WHITELISTED = 430;
37
37
 
38
+ // 440 Prebuilds now always require a project (custom status code)
39
+ export const PROJECT_REQUIRED = 440;
40
+
38
41
  // 450 Payment error
39
42
  export const PAYMENT_ERROR = 450;
40
43
 
41
44
  // 451 Out of credits
42
45
  export const PAYMENT_SPENDING_LIMIT_REACHED = 451;
43
46
 
47
+ // 451 Error creating a subscription
48
+ export const SUBSCRIPTION_ERROR = 452;
49
+
44
50
  // 455 Invalid cost center (custom status code)
45
51
  export const INVALID_COST_CENTER = 455;
46
52
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  export interface OssAllowList {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  export namespace PaymentProtocol {
package/src/permission.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  // see below for explanation
package/src/plans.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2021 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  export type Currency = "USD" | "EUR";
@@ -131,7 +131,7 @@ export namespace Plans {
131
131
  githubPlanNumber: 1,
132
132
 
133
133
  type: "free",
134
- name: "Open Source",
134
+ name: "Free",
135
135
  currency: "USD",
136
136
  pricePerMonth: 0,
137
137
  hoursPerMonth: 100,
@@ -146,7 +146,7 @@ export namespace Plans {
146
146
  githubPlanNumber: 5,
147
147
 
148
148
  type: "free-50",
149
- name: "Open Source",
149
+ name: "Free",
150
150
  currency: "USD",
151
151
  pricePerMonth: 0,
152
152
  hoursPerMonth: 50,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
- * See License-AGPL.txt in the project root for license information.
4
+ * See License.AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
7
  import { suite, test } from "mocha-typescript";