@gitpod/gitpod-protocol 0.1.5-wth-argo.0 → 0.1.5-yh-vmoptions-fork.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 (352) hide show
  1. package/data/gitpod-schema.json +206 -28
  2. package/lib/accounting-protocol.d.ts +162 -0
  3. package/lib/accounting-protocol.d.ts.map +1 -0
  4. package/lib/accounting-protocol.js +107 -0
  5. package/lib/accounting-protocol.js.map +1 -0
  6. package/lib/admin-protocol.d.ts +32 -4
  7. package/lib/admin-protocol.d.ts.map +1 -1
  8. package/lib/admin-protocol.js +15 -0
  9. package/lib/admin-protocol.js.map +1 -1
  10. package/lib/analytics.d.ts +44 -0
  11. package/lib/analytics.d.ts.map +1 -0
  12. package/lib/analytics.js +10 -0
  13. package/lib/analytics.js.map +1 -0
  14. package/lib/auth.d.ts.map +1 -1
  15. package/lib/context-url.d.ts +31 -0
  16. package/lib/context-url.d.ts.map +1 -0
  17. package/lib/context-url.js +102 -0
  18. package/lib/context-url.js.map +1 -0
  19. package/lib/context-url.spec.d.ts +14 -0
  20. package/lib/context-url.spec.d.ts.map +1 -0
  21. package/lib/context-url.spec.js +109 -0
  22. package/lib/context-url.spec.js.map +1 -0
  23. package/lib/email-protocol.d.ts +1 -2
  24. package/lib/email-protocol.d.ts.map +1 -1
  25. package/lib/email-protocol.js +4 -4
  26. package/lib/email-protocol.js.map +1 -1
  27. package/lib/encryption/container-module.d.ts.map +1 -1
  28. package/lib/encryption/container-module.js +5 -4
  29. package/lib/encryption/container-module.js.map +1 -1
  30. package/lib/encryption/encryption-engine.d.ts.map +1 -1
  31. package/lib/encryption/encryption-engine.js +25 -26
  32. package/lib/encryption/encryption-engine.js.map +1 -1
  33. package/lib/encryption/encryption-engine.spec.d.ts.map +1 -1
  34. package/lib/encryption/encryption-engine.spec.js +29 -37
  35. package/lib/encryption/encryption-engine.spec.js.map +1 -1
  36. package/lib/encryption/encryption-service.d.ts.map +1 -1
  37. package/lib/encryption/encryption-service.js +30 -44
  38. package/lib/encryption/encryption-service.js.map +1 -1
  39. package/lib/encryption/key-provider.d.ts.map +1 -1
  40. package/lib/encryption/key-provider.js +31 -38
  41. package/lib/encryption/key-provider.js.map +1 -1
  42. package/lib/env.d.ts +0 -6
  43. package/lib/env.d.ts.map +1 -1
  44. package/lib/env.js +7 -27
  45. package/lib/env.js.map +1 -1
  46. package/lib/gitpod-file-parser.d.ts.map +1 -1
  47. package/lib/gitpod-file-parser.js +26 -42
  48. package/lib/gitpod-file-parser.js.map +1 -1
  49. package/lib/gitpod-file-parser.spec.js +145 -142
  50. package/lib/gitpod-file-parser.spec.js.map +1 -1
  51. package/lib/gitpod-service.d.ts +180 -33
  52. package/lib/gitpod-service.d.ts.map +1 -1
  53. package/lib/gitpod-service.js +194 -273
  54. package/lib/gitpod-service.js.map +1 -1
  55. package/lib/headless-workspace-log.d.ts +9 -11
  56. package/lib/headless-workspace-log.d.ts.map +1 -1
  57. package/lib/headless-workspace-log.js +6 -8
  58. package/lib/headless-workspace-log.js.map +1 -1
  59. package/lib/ide-frontend-service.d.ts +5 -1
  60. package/lib/ide-frontend-service.d.ts.map +1 -1
  61. package/lib/ide-protocol.d.ts +105 -0
  62. package/lib/ide-protocol.d.ts.map +1 -0
  63. package/lib/{util/without.js → ide-protocol.js} +2 -2
  64. package/lib/ide-protocol.js.map +1 -0
  65. package/lib/index.d.ts +16 -10
  66. package/lib/index.d.ts.map +1 -1
  67. package/lib/index.js +7 -1
  68. package/lib/index.js.map +1 -1
  69. package/lib/installation-admin-protocol.d.ts +27 -0
  70. package/lib/installation-admin-protocol.d.ts.map +1 -0
  71. package/lib/installation-admin-protocol.js +30 -0
  72. package/lib/installation-admin-protocol.js.map +1 -0
  73. package/lib/license-protocol.d.ts +7 -0
  74. package/lib/license-protocol.d.ts.map +1 -1
  75. package/lib/license-protocol.js.map +1 -1
  76. package/lib/messaging/browser/connection.d.ts +5 -3
  77. package/lib/messaging/browser/connection.d.ts.map +1 -1
  78. package/lib/messaging/browser/connection.js +184 -34
  79. package/lib/messaging/browser/connection.js.map +1 -1
  80. package/lib/messaging/browser/window-connection.d.ts +4 -4
  81. package/lib/messaging/browser/window-connection.d.ts.map +1 -1
  82. package/lib/messaging/browser/window-connection.js +42 -59
  83. package/lib/messaging/browser/window-connection.js.map +1 -1
  84. package/lib/messaging/client-call-metrics.d.ts +35 -0
  85. package/lib/messaging/client-call-metrics.d.ts.map +1 -0
  86. package/lib/messaging/client-call-metrics.js +83 -0
  87. package/lib/messaging/client-call-metrics.js.map +1 -0
  88. package/lib/messaging/error.d.ts +6 -1
  89. package/lib/messaging/error.d.ts.map +1 -1
  90. package/lib/messaging/error.js +12 -2
  91. package/lib/messaging/error.js.map +1 -1
  92. package/lib/messaging/handler.d.ts +10 -0
  93. package/lib/messaging/handler.d.ts.map +1 -1
  94. package/lib/messaging/handler.js +1 -1
  95. package/lib/messaging/node/connection.d.ts +1 -17
  96. package/lib/messaging/node/connection.d.ts.map +1 -1
  97. package/lib/messaging/node/connection.js +24 -60
  98. package/lib/messaging/node/connection.js.map +1 -1
  99. package/lib/messaging/proxy-factory.d.ts +3 -1
  100. package/lib/messaging/proxy-factory.d.ts.map +1 -1
  101. package/lib/messaging/proxy-factory.js +75 -162
  102. package/lib/messaging/proxy-factory.js.map +1 -1
  103. package/lib/oss-allowlist.d.ts +14 -0
  104. package/lib/oss-allowlist.d.ts.map +1 -0
  105. package/lib/oss-allowlist.js +8 -0
  106. package/lib/oss-allowlist.js.map +1 -0
  107. package/lib/payment-protocol.d.ts +18 -0
  108. package/lib/payment-protocol.d.ts.map +1 -0
  109. package/lib/payment-protocol.js +13 -0
  110. package/lib/payment-protocol.js.map +1 -0
  111. package/lib/permission.d.ts +10 -3
  112. package/lib/permission.d.ts.map +1 -1
  113. package/lib/permission.js +41 -31
  114. package/lib/permission.js.map +1 -1
  115. package/lib/plans.d.ts +210 -0
  116. package/lib/plans.d.ts.map +1 -0
  117. package/lib/plans.js +605 -0
  118. package/lib/plans.js.map +1 -0
  119. package/lib/protocol.d.ts +196 -83
  120. package/lib/protocol.d.ts.map +1 -1
  121. package/lib/protocol.js +264 -200
  122. package/lib/protocol.js.map +1 -1
  123. package/lib/snapshot-url.d.ts +14 -0
  124. package/lib/snapshot-url.d.ts.map +1 -0
  125. package/lib/snapshot-url.js +26 -0
  126. package/lib/snapshot-url.js.map +1 -0
  127. package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
  128. package/lib/snapshot-url.spec.d.ts.map +1 -0
  129. package/lib/snapshot-url.spec.js +41 -0
  130. package/lib/snapshot-url.spec.js.map +1 -0
  131. package/lib/team-subscription-protocol.d.ts +91 -0
  132. package/lib/team-subscription-protocol.d.ts.map +1 -0
  133. package/lib/team-subscription-protocol.js +74 -0
  134. package/lib/team-subscription-protocol.js.map +1 -0
  135. package/lib/teams-projects-protocol.d.ts +118 -0
  136. package/lib/teams-projects-protocol.d.ts.map +1 -0
  137. package/lib/teams-projects-protocol.js +30 -0
  138. package/lib/teams-projects-protocol.js.map +1 -0
  139. package/lib/typings/globals.d.ts +2 -2
  140. package/lib/typings/globals.d.ts.map +1 -1
  141. package/lib/util/analytics.d.ts +8 -0
  142. package/lib/util/analytics.d.ts.map +1 -0
  143. package/lib/util/analytics.js +88 -0
  144. package/lib/util/analytics.js.map +1 -0
  145. package/lib/util/async-iterator.d.ts.map +1 -1
  146. package/lib/util/async-iterator.js +57 -135
  147. package/lib/util/async-iterator.js.map +1 -1
  148. package/lib/util/cancelable.js +17 -59
  149. package/lib/util/cancelable.js.map +1 -1
  150. package/lib/util/date-time.js +11 -11
  151. package/lib/util/date-time.js.map +1 -1
  152. package/lib/util/deferred.js +10 -12
  153. package/lib/util/deferred.js.map +1 -1
  154. package/lib/util/disposable.d.ts.map +1 -1
  155. package/lib/util/disposable.js +27 -40
  156. package/lib/util/disposable.js.map +1 -1
  157. package/lib/util/event.d.ts.map +1 -1
  158. package/lib/util/event.js +63 -77
  159. package/lib/util/event.js.map +1 -1
  160. package/lib/util/garbage-collected-cache.d.ts +1 -0
  161. package/lib/util/garbage-collected-cache.d.ts.map +1 -1
  162. package/lib/util/garbage-collected-cache.js +27 -47
  163. package/lib/util/garbage-collected-cache.js.map +1 -1
  164. package/lib/util/generate-workspace-id.d.ts +6 -1
  165. package/lib/util/generate-workspace-id.d.ts.map +1 -1
  166. package/lib/util/generate-workspace-id.js +469 -502
  167. package/lib/util/generate-workspace-id.js.map +1 -1
  168. package/lib/util/generate-workspace-id.spec.js +68 -78
  169. package/lib/util/generate-workspace-id.spec.js.map +1 -1
  170. package/lib/util/gitpod-cookie.d.ts +20 -0
  171. package/lib/util/gitpod-cookie.d.ts.map +1 -0
  172. package/lib/util/gitpod-cookie.js +41 -0
  173. package/lib/util/gitpod-cookie.js.map +1 -0
  174. package/lib/util/gitpod-host-url.d.ts +1 -2
  175. package/lib/util/gitpod-host-url.d.ts.map +1 -1
  176. package/lib/util/gitpod-host-url.js +108 -109
  177. package/lib/util/gitpod-host-url.js.map +1 -1
  178. package/lib/util/gitpod-host-url.spec.d.ts +7 -1
  179. package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
  180. package/lib/util/gitpod-host-url.spec.js +113 -31
  181. package/lib/util/gitpod-host-url.spec.js.map +1 -1
  182. package/lib/util/grpc.d.ts +15 -0
  183. package/lib/util/grpc.d.ts.map +1 -0
  184. package/lib/util/grpc.js +18 -0
  185. package/lib/util/grpc.js.map +1 -0
  186. package/lib/util/jaeger-client-types.d.ts +68 -0
  187. package/lib/util/jaeger-client-types.d.ts.map +1 -0
  188. package/lib/{theia-plugins.js → util/jaeger-client-types.js} +1 -1
  189. package/lib/util/jaeger-client-types.js.map +1 -0
  190. package/lib/util/logging.d.ts +49 -33
  191. package/lib/util/logging.d.ts.map +1 -1
  192. package/lib/util/logging.js +125 -129
  193. package/lib/util/logging.js.map +1 -1
  194. package/lib/util/make-link.js +5 -5
  195. package/lib/util/make-link.js.map +1 -1
  196. package/lib/util/parse-workspace-id.d.ts +10 -0
  197. package/lib/util/parse-workspace-id.d.ts.map +1 -1
  198. package/lib/util/parse-workspace-id.js +31 -7
  199. package/lib/util/parse-workspace-id.js.map +1 -1
  200. package/lib/util/parse-workspace-id.spec.d.ts +4 -0
  201. package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
  202. package/lib/util/parse-workspace-id.spec.js +123 -84
  203. package/lib/util/parse-workspace-id.spec.js.map +1 -1
  204. package/lib/util/queue.js +16 -55
  205. package/lib/util/queue.js.map +1 -1
  206. package/lib/util/queue.spec.js +147 -288
  207. package/lib/util/queue.spec.js.map +1 -1
  208. package/lib/util/repeat.d.ts +15 -0
  209. package/lib/util/repeat.d.ts.map +1 -0
  210. package/lib/util/repeat.js +55 -0
  211. package/lib/util/repeat.js.map +1 -0
  212. package/lib/util/semaphore.d.ts.map +1 -1
  213. package/lib/util/semaphore.js +15 -46
  214. package/lib/util/semaphore.js.map +1 -1
  215. package/lib/util/skip-if.d.ts.map +1 -1
  216. package/lib/util/skip-if.js +6 -6
  217. package/lib/util/skip-if.js.map +1 -1
  218. package/lib/util/timeutil.d.ts +1 -0
  219. package/lib/util/timeutil.d.ts.map +1 -1
  220. package/lib/util/timeutil.js +35 -17
  221. package/lib/util/timeutil.js.map +1 -1
  222. package/lib/util/timeutil.spec.d.ts.map +1 -1
  223. package/lib/util/timeutil.spec.js +21 -24
  224. package/lib/util/timeutil.spec.js.map +1 -1
  225. package/lib/util/tracing.d.ts +52 -6
  226. package/lib/util/tracing.d.ts.map +1 -1
  227. package/lib/util/tracing.js +197 -64
  228. package/lib/util/tracing.js.map +1 -1
  229. package/lib/util/tracing.spec.d.ts +7 -0
  230. package/lib/util/tracing.spec.d.ts.map +1 -0
  231. package/lib/util/tracing.spec.js +121 -0
  232. package/lib/util/tracing.spec.js.map +1 -0
  233. package/lib/util/workspace-port-authentication.d.ts +7 -7
  234. package/lib/util/workspace-port-authentication.d.ts.map +1 -1
  235. package/lib/util/workspace-port-authentication.js +10 -12
  236. package/lib/util/workspace-port-authentication.js.map +1 -1
  237. package/lib/workspace-cluster.d.ts +76 -0
  238. package/lib/workspace-cluster.d.ts.map +1 -0
  239. package/lib/workspace-cluster.js +31 -0
  240. package/lib/workspace-cluster.js.map +1 -0
  241. package/lib/workspace-instance.d.ts +45 -5
  242. package/lib/workspace-instance.d.ts.map +1 -1
  243. package/lib/wsready.d.ts +1 -1
  244. package/lib/wsready.d.ts.map +1 -1
  245. package/lib/wsready.js +2 -2
  246. package/package.json +32 -18
  247. package/pkg-yarn.lock +18 -10
  248. package/provenance-bundle.jsonl +2 -0
  249. package/src/accounting-protocol.ts +241 -0
  250. package/src/admin-protocol.ts +70 -19
  251. package/src/analytics.ts +52 -0
  252. package/src/auth.ts +2 -2
  253. package/src/context-url.spec.ts +67 -0
  254. package/src/context-url.ts +109 -0
  255. package/src/email-protocol.ts +5 -7
  256. package/src/encryption/container-module.ts +2 -3
  257. package/src/encryption/encryption-engine.spec.ts +9 -8
  258. package/src/encryption/encryption-engine.ts +14 -14
  259. package/src/encryption/encryption-service.ts +4 -5
  260. package/src/encryption/key-provider.ts +16 -19
  261. package/src/env.ts +0 -22
  262. package/src/gitpod-file-parser.spec.ts +55 -61
  263. package/src/gitpod-file-parser.ts +16 -17
  264. package/src/gitpod-service.ts +348 -110
  265. package/src/headless-workspace-log.ts +12 -14
  266. package/src/ide-frontend-service.ts +6 -2
  267. package/src/ide-protocol.ts +119 -0
  268. package/src/index.ts +16 -10
  269. package/src/installation-admin-protocol.ts +42 -0
  270. package/src/license-protocol.ts +12 -6
  271. package/src/messaging/browser/connection.ts +197 -18
  272. package/src/messaging/browser/window-connection.ts +39 -29
  273. package/src/messaging/client-call-metrics.ts +96 -0
  274. package/src/messaging/error.ts +18 -5
  275. package/src/messaging/handler.ts +13 -1
  276. package/src/messaging/node/connection.ts +23 -70
  277. package/src/messaging/proxy-factory.ts +35 -34
  278. package/src/oss-allowlist.ts +15 -0
  279. package/src/payment-protocol.ts +20 -0
  280. package/src/permission.ts +42 -33
  281. package/src/plans.ts +679 -0
  282. package/src/protocol.ts +493 -275
  283. package/src/snapshot-url.spec.ts +27 -0
  284. package/src/snapshot-url.ts +27 -0
  285. package/src/team-subscription-protocol.ts +147 -0
  286. package/src/teams-projects-protocol.ts +153 -0
  287. package/src/typings/globals.ts +4 -4
  288. package/src/util/analytics.ts +109 -0
  289. package/src/util/async-iterator.ts +4 -5
  290. package/src/util/cancelable.ts +3 -3
  291. package/src/util/date-time.ts +8 -8
  292. package/src/util/deferred.ts +6 -6
  293. package/src/util/disposable.ts +3 -6
  294. package/src/util/event.ts +9 -11
  295. package/src/util/garbage-collected-cache.ts +11 -8
  296. package/src/util/generate-workspace-id.spec.ts +37 -10
  297. package/src/util/generate-workspace-id.ts +464 -438
  298. package/src/util/gitpod-cookie.ts +38 -0
  299. package/src/util/gitpod-host-url.spec.ts +59 -8
  300. package/src/util/gitpod-host-url.ts +52 -40
  301. package/src/util/grpc.ts +15 -0
  302. package/src/util/jaeger-client-types.ts +102 -0
  303. package/src/util/logging.ts +145 -72
  304. package/src/util/make-link.ts +6 -7
  305. package/src/util/parse-workspace-id.spec.ts +37 -8
  306. package/src/util/parse-workspace-id.ts +32 -7
  307. package/src/util/queue.spec.ts +28 -26
  308. package/src/util/repeat.ts +45 -0
  309. package/src/util/semaphore.ts +6 -8
  310. package/src/util/skip-if.ts +10 -7
  311. package/src/util/timeutil.spec.ts +14 -15
  312. package/src/util/timeutil.ts +25 -15
  313. package/src/util/tracing.spec.ts +88 -0
  314. package/src/util/tracing.ts +200 -31
  315. package/src/util/workspace-port-authentication.ts +10 -13
  316. package/src/workspace-cluster.ts +107 -0
  317. package/src/workspace-instance.ts +98 -31
  318. package/src/wsready.ts +3 -3
  319. package/data/builtin-theia-plugins.json +0 -372
  320. package/lib/messaging/connection-error-handler.d.ts +0 -27
  321. package/lib/messaging/connection-error-handler.d.ts.map +0 -1
  322. package/lib/messaging/connection-error-handler.js +0 -46
  323. package/lib/messaging/connection-error-handler.js.map +0 -1
  324. package/lib/theia-plugins.d.ts +0 -11
  325. package/lib/theia-plugins.d.ts.map +0 -1
  326. package/lib/theia-plugins.js.map +0 -1
  327. package/lib/util/context-url.d.ts +0 -13
  328. package/lib/util/context-url.d.ts.map +0 -1
  329. package/lib/util/context-url.js +0 -26
  330. package/lib/util/context-url.js.map +0 -1
  331. package/lib/util/context-url.spec.d.ts +0 -10
  332. package/lib/util/context-url.spec.d.ts.map +0 -1
  333. package/lib/util/context-url.spec.js +0 -52
  334. package/lib/util/context-url.spec.js.map +0 -1
  335. package/lib/util/repeater.d.ts +0 -22
  336. package/lib/util/repeater.d.ts.map +0 -1
  337. package/lib/util/repeater.js +0 -118
  338. package/lib/util/repeater.js.map +0 -1
  339. package/lib/util/safe-promise.d.ts +0 -11
  340. package/lib/util/safe-promise.d.ts.map +0 -1
  341. package/lib/util/safe-promise.js +0 -34
  342. package/lib/util/safe-promise.js.map +0 -1
  343. package/lib/util/without.d.ts +0 -7
  344. package/lib/util/without.d.ts.map +0 -1
  345. package/lib/util/without.js.map +0 -1
  346. package/src/messaging/connection-error-handler.ts +0 -62
  347. package/src/theia-plugins.ts +0 -11
  348. package/src/util/context-url.spec.ts +0 -25
  349. package/src/util/context-url.ts +0 -23
  350. package/src/util/jaeger-client.d.ts +0 -105
  351. package/src/util/repeater.ts +0 -49
  352. package/src/util/safe-promise.ts +0 -26
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Copyright (c) 2020 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 * as fs from "fs";
8
+ import { filePathTelepresenceAware } from "./env";
9
+ import { DeepPartial } from "./util/deep-partial";
10
+ import { PermissionName } from "./permission";
11
+
12
+ export interface WorkspaceCluster {
13
+ // Name of the workspace cluster.
14
+ // This is the string set in each
15
+ // Must be identical to the installationShortname of the cluster it represents!
16
+ name: string;
17
+
18
+ // URL of the cluster's ws-manager API
19
+ url: string;
20
+
21
+ // TLS contains the keys and certificates necessary to use mTLS between server and clients
22
+ tls?: TLSConfig;
23
+
24
+ // Current state of the cluster
25
+ state: WorkspaceClusterState;
26
+
27
+ // Maximum value score can reach for this cluster
28
+ maxScore: number;
29
+
30
+ // Score used for cluster selection when starting workspace instances
31
+ score: number;
32
+
33
+ // True if this bridge should control this cluster
34
+ govern: boolean;
35
+
36
+ // An optional set of constraints that limit who can start workspaces on the cluster
37
+ admissionConstraints?: AdmissionConstraint[];
38
+ }
39
+
40
+ export type WorkspaceClusterState = "available" | "cordoned" | "draining";
41
+ export interface TLSConfig {
42
+ // the CA shared between client and server (base64 encoded)
43
+ ca: string;
44
+ // the private key (base64 encoded)
45
+ key: string;
46
+ // the certificate signed with the shared CA (base64 encoded)
47
+ crt: string;
48
+ }
49
+ export namespace TLSConfig {
50
+ export const loadFromBase64File = (path: string): string =>
51
+ fs.readFileSync(filePathTelepresenceAware(path)).toString("base64");
52
+ }
53
+ export type WorkspaceClusterWoTLS = Omit<WorkspaceCluster, "tls">;
54
+ export type WorkspaceManagerConnectionInfo = Pick<WorkspaceCluster, "name" | "url" | "tls">;
55
+
56
+ export type AdmissionConstraint =
57
+ | AdmissionConstraintFeaturePreview
58
+ | AdmissionConstraintHasPermission
59
+ | AdmissionConstraintHasUserLevel
60
+ | AdmissionConstraintHasMoreResources;
61
+ export type AdmissionConstraintFeaturePreview = { type: "has-feature-preview" };
62
+ export type AdmissionConstraintHasPermission = { type: "has-permission"; permission: PermissionName };
63
+ export type AdmissionConstraintHasUserLevel = { type: "has-user-level"; level: string };
64
+ export type AdmissionConstraintHasMoreResources = { type: "has-more-resources" };
65
+
66
+ export namespace AdmissionConstraint {
67
+ export function is(o: any): o is AdmissionConstraint {
68
+ return !!o && "type" in o;
69
+ }
70
+ export function isHasPermissionConstraint(o: any): o is AdmissionConstraintHasPermission {
71
+ return is(o) && o.type === "has-permission";
72
+ }
73
+ export function hasPermission(ac: AdmissionConstraint, permission: PermissionName): boolean {
74
+ return isHasPermissionConstraint(ac) && ac.permission === permission;
75
+ }
76
+ }
77
+
78
+ export const WorkspaceClusterDB = Symbol("WorkspaceClusterDB");
79
+ export interface WorkspaceClusterDB {
80
+ /**
81
+ * Stores the given WorkspaceCluster to the cluster-local DB in a consistent manner.
82
+ * If there already is an entry with the same name it's merged and updated with the given state.
83
+ * @param cluster
84
+ */
85
+ save(cluster: WorkspaceCluster): Promise<void>;
86
+
87
+ /**
88
+ * Deletes the cluster identified by this name, if any.
89
+ * @param name
90
+ */
91
+ deleteByName(name: string): Promise<void>;
92
+
93
+ /**
94
+ * Finds a WorkspaceCluster with the given name. If there is none, `undefined` is returned.
95
+ * @param name
96
+ */
97
+ findByName(name: string): Promise<WorkspaceCluster | undefined>;
98
+
99
+ /**
100
+ * Lists all WorkspaceClusterWoTls for which the given predicate is true (does not return TLS for size/speed concerns)
101
+ * @param predicate
102
+ */
103
+ findFiltered(predicate: DeepPartial<WorkspaceClusterFilter>): Promise<WorkspaceClusterWoTLS[]>;
104
+ }
105
+ export interface WorkspaceClusterFilter extends Pick<WorkspaceCluster, "state" | "govern" | "url"> {
106
+ minScore: number;
107
+ }
@@ -23,16 +23,22 @@ export interface WorkspaceInstance {
23
23
  // The time an instance has switched phase to 'Running'
24
24
  startedTime?: string;
25
25
 
26
+ // The time an instance has switched phase to 'Stopping' */
27
+ stoppingTime?: string;
28
+
26
29
  // The time an instance has switched phase to 'Stopped' */
27
30
  stoppedTime?: string;
28
31
 
29
32
  // ideUrl is the URL at which the workspace is available on the internet
33
+ // Note: this is nitially empty, filled during starting process!
30
34
  ideUrl: string;
31
35
 
32
36
  // region is the name of the workspace cluster this instance runs in
37
+ // Note: this is nitially empty, filled during starting process!
33
38
  region: string;
34
39
 
35
40
  // workspaceImage is the name of the Docker image this instance runs
41
+ // Note: this is nitially empty, filled during starting process!
36
42
  workspaceImage: string;
37
43
 
38
44
  // status is the latest status of the instance that we're aware of
@@ -45,6 +51,24 @@ export interface WorkspaceInstance {
45
51
 
46
52
  // instance is hard-deleted on the database and about to be collected by db-sync
47
53
  readonly deleted?: boolean;
54
+
55
+ /**
56
+ * Contains information about the image build, if there was any
57
+ */
58
+ imageBuildInfo?: ImageBuildInfo;
59
+
60
+ /**
61
+ * workspace class, also known as workspace size, determines the type of
62
+ * resources that are provided to the workspace.
63
+ */
64
+ workspaceClass?: string;
65
+
66
+ /**
67
+ * Identifies the team to which this instance's runtime should be attributed to
68
+ * (e.g. for usage analytics or billing purposes).
69
+ * If unset, the usage should be attributed to the workspace's owner (ws.ownerId).
70
+ */
71
+ attributedTeamId?: string;
48
72
  }
49
73
 
50
74
  // WorkspaceInstanceStatus describes the current state of a workspace instance
@@ -70,6 +94,12 @@ export interface WorkspaceInstanceStatus {
70
94
  // nodeName is the name of the node the instance was scheduled onto
71
95
  nodeName?: string;
72
96
 
97
+ // podName is the name of the pod of this instance
98
+ podName?: string;
99
+
100
+ // nodeIp is the IP of the node the workspace is running on
101
+ nodeIp?: string;
102
+
73
103
  // ownerToken is the token one needs to access the workspace. Its presence is checked by ws-proxy.
74
104
  ownerToken?: string;
75
105
  }
@@ -77,53 +107,55 @@ export interface WorkspaceInstanceStatus {
77
107
  // WorkspaceInstancePhase describes a high-level state of a workspace instance
78
108
  export type WorkspaceInstancePhase =
79
109
  // unknown indicates an issue within the system in that it cannot determine the actual phase of
80
- // a workspace. This phase is usually accompanied by an error.
81
- "unknown" |
110
+ // a workspace. This phase is usually accompanied by an error.
111
+ | "unknown"
82
112
 
83
113
  // Preparing means that we haven't actually started the workspace instance just yet, but rather
84
- // are still preparing for launch. This means we're building the Docker image for the workspace.
85
- "preparing" |
114
+ // are still preparing for launch.
115
+ | "preparing"
116
+
117
+ // Building means that we are building the Docker image for the workspace. A workspace will enter this phase only
118
+ // if an image build is required for that workspace.
119
+ | "building"
86
120
 
87
121
  // Pending means the workspace does not yet consume resources in the cluster, but rather is looking for
88
- // some space within the cluster. If for example the cluster needs to scale up to accomodate the
89
- // workspace, the workspace will be in Pending state until that happened.
90
- "pending" |
122
+ // some space within the cluster. If for example the cluster needs to scale up to accomodate the
123
+ // workspace, the workspace will be in Pending state until that happened.
124
+ | "pending"
91
125
 
92
126
  // Creating means the workspace is currently being created. Thati includes downloading the images required
93
- // to run the workspace over the network. The time spent in this phase varies widely and depends on the current
94
- // network speed, image size and cache states.
95
- "creating" |
127
+ // to run the workspace over the network. The time spent in this phase varies widely and depends on the current
128
+ // network speed, image size and cache states.
129
+ | "creating"
96
130
 
97
131
  // Initializing is the phase in which the workspace is executing the appropriate workspace initializer (e.g. Git
98
- // clone or backup download). After this phase one can expect the workspace to either be Running or Failed.
99
- "initializing" |
132
+ // clone or backup download). After this phase one can expect the workspace to either be Running or Failed.
133
+ | "initializing"
100
134
 
101
135
  // Running means the workspace is able to actively perform work, either by serving a user through Theia,
102
- // or as a headless workspace.
103
- "running" |
136
+ // or as a headless workspace.
137
+ | "running"
104
138
 
105
139
  // Interrupted is an exceptional state where the container should be running but is temporarily unavailable.
106
140
  // When in this state, we expect it to become running or stopping anytime soon.
107
- "interrupted" |
141
+ | "interrupted"
108
142
 
109
143
  // Stopping means that the workspace is currently shutting down. It could go to stopped every moment.
110
- "stopping" |
144
+ | "stopping"
111
145
 
112
146
  // Stopped means the workspace ended regularly because it was shut down.
113
- "stopped";
147
+ | "stopped";
114
148
 
115
149
  export interface WorkspaceInstanceConditions {
116
150
  // Failed contains the reason the workspace failed to operate. If this field is empty, the workspace has not failed.
117
- failed?: string
151
+ // failed contains technical details for the failure of the workspace.
152
+ failed?: string;
118
153
 
119
154
  // timeout contains the reason the workspace has timed out. If this field is empty, the workspace has not timed out.
120
- timeout?: string
155
+ timeout?: string;
121
156
 
122
157
  // PullingImages marks if the workspace is currently pulling its images. This condition can only be set during PhaseCreating
123
- pullingImages?: boolean
124
-
125
- // ServiceExists denotes if the workspace theia-/ports- services exist. This condition will be true if either of the two services exist.
126
- serviceExists?: boolean
158
+ pullingImages?: boolean;
127
159
 
128
160
  // deployed marks that a workspace instance was sent/deployed at a workspace manager
129
161
  deployed?: boolean;
@@ -133,22 +165,28 @@ export interface WorkspaceInstanceConditions {
133
165
 
134
166
  // ISO8601 timestamp when the first user activity was registered in the frontend. Only set if the workspace is running.
135
167
  firstUserActivity?: string;
168
+
169
+ // headlessTaskFailed indicates that a headless workspace task failed
170
+ // headlessTaskFailed is only set if:
171
+ // * this workspace is headless
172
+ // * the task being run returned a non 0 exit status code
173
+ headlessTaskFailed?: string;
174
+
175
+ // stopped_by_request is true if the workspace was stopped using a StopWorkspace call
176
+ stoppedByRequest?: boolean;
136
177
  }
137
178
 
138
179
  // AdmissionLevel describes who can access a workspace instance and its ports.
139
- export type AdmissionLevel = 'owner_only' | 'everyone';
180
+ export type AdmissionLevel = "owner_only" | "everyone";
140
181
 
141
182
  // PortVisibility describes how a port can be accessed
142
- export type PortVisibility = 'public' | 'private';
183
+ export type PortVisibility = "public" | "private";
143
184
 
144
185
  // WorkspaceInstancePort describes a port exposed on a workspace instance
145
186
  export interface WorkspaceInstancePort {
146
187
  // The outward-facing port number
147
188
  port: number;
148
189
 
149
- // An optional inward-facing port number. If not present we'll use port.
150
- targetPort?: number;
151
-
152
190
  // The visiblity of this port. Optional for backwards compatibility.
153
191
  visibility?: PortVisibility;
154
192
 
@@ -168,19 +206,25 @@ export interface WorkspaceInstanceRepoStatus {
168
206
  uncommitedFiles?: string[];
169
207
 
170
208
  // the total number of uncommited files
171
- totalUncommitedFiles?: number
209
+ totalUncommitedFiles?: number;
172
210
 
173
211
  // untrackedFiles is the list of untracked files in the workspace, possibly truncated
174
212
  untrackedFiles?: string[];
175
213
 
176
214
  // the total number of untracked files
177
- totalUntrackedFiles?: number
215
+ totalUntrackedFiles?: number;
178
216
 
179
217
  // unpushedCommits is the list of unpushed changes in the workspace, possibly truncated
180
218
  unpushedCommits?: string[];
181
219
 
182
220
  // the total number of unpushed changes
183
- totalUnpushedCommits?: number
221
+ totalUnpushedCommits?: number;
222
+ }
223
+
224
+ // ConfigurationIdeConfig ide config of WorkspaceInstanceConfiguration
225
+ export interface ConfigurationIdeConfig {
226
+ useLatest?: boolean;
227
+ desktopIdeAlias?: string;
184
228
  }
185
229
 
186
230
  // WorkspaceInstanceConfiguration contains all per-instance configuration
@@ -194,4 +238,27 @@ export interface WorkspaceInstanceConfiguration {
194
238
 
195
239
  // ideImage is the ref of the IDE image this instance uses.
196
240
  ideImage: string;
241
+
242
+ // desktopIdeImage is the ref of the desktop IDE image this instance uses.
243
+ desktopIdeImage?: string;
244
+
245
+ // supervisorImage is the ref of the supervisor image this instance uses.
246
+ supervisorImage?: string;
247
+
248
+ ideConfig?: ConfigurationIdeConfig;
249
+ }
250
+
251
+ /**
252
+ * Holds information about the image build (if there was one) for this WorkspaceInstance
253
+ */
254
+ export interface ImageBuildInfo {
255
+ log?: ImageBuildLogInfo;
256
+ }
257
+
258
+ /**
259
+ * Holds information about how to access logs for this an image build
260
+ */
261
+ export interface ImageBuildLogInfo {
262
+ url: string;
263
+ headers: { [key: string]: string };
197
264
  }
package/src/wsready.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Copyright (c) 2020 Gitpod GmbH. All rights reserved.
2
+ * Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
3
  * Licensed under the GNU Affero General Public License (AGPL).
4
4
  * See License-AGPL.txt in the project root for license information.
5
5
  */
6
6
 
7
- // generated using github.com/32leaves/bel on 2020-06-11 14:47:30.351829728 +0000 UTC m=+0.002956090
7
+ // generated using github.com/32leaves/bel on 2022-05-18 18:19:49.011672619 +0000 UTC m=+0.006607361
8
8
  // DO NOT MODIFY
9
9
 
10
10
  export enum WorkspaceInitSource {
@@ -13,5 +13,5 @@ export enum WorkspaceInitSource {
13
13
  WorkspaceInitFromOther = "from-other",
14
14
  }
15
15
  export interface WorkspaceReadyMessage {
16
- source: WorkspaceInitSource
16
+ source: WorkspaceInitSource;
17
17
  }