@toshicloud/sdk 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +189 -30
- package/dist/client.d.ts +30 -4
- package/dist/client.js +19 -6
- package/dist/errors.d.ts +47 -0
- package/dist/errors.js +136 -0
- package/dist/execute.js +15 -0
- package/dist/gen/toshi/permission_pb.d.ts +39 -0
- package/dist/gen/toshi/permission_pb.js +42 -0
- package/dist/gen/toshi/workspace/v1/artifacts_pb.d.ts +1 -1
- package/dist/gen/toshi/workspace/v1/artifacts_pb.js +3 -2
- package/dist/gen/toshi/workspace/v1/audit_events_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/channels_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/discovery_pb.d.ts +676 -0
- package/dist/gen/toshi/workspace/v1/discovery_pb.js +182 -0
- package/dist/gen/toshi/workspace/v1/display_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/fillers_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/hostjobs_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/hosts_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/products_pb.d.ts +703 -0
- package/dist/gen/toshi/workspace/v1/products_pb.js +106 -0
- package/dist/gen/toshi/workspace/v1/projects_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/recordings_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/secrets_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/storage_providers_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/tokens_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/volumes_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/webhook_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/workloads_pb.js +2 -1
- package/dist/gen/toshi/workspace/v1/workspace_pb.d.ts +2 -2
- package/dist/gen/toshi/workspace/v1/workspace_pb.js +1 -1
- package/dist/gen/toshi/workspace/v1/workspace_service_pb.js +2 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +5 -1
- package/dist/interceptors.d.ts +17 -2
- package/dist/interceptors.js +69 -4
- package/dist/node/client.d.ts +35 -0
- package/dist/node/client.js +178 -0
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.js +4 -0
- package/dist/output.js +6 -1
- package/dist/paginate.d.ts +36 -0
- package/dist/paginate.js +37 -0
- package/dist/retry.js +4 -0
- package/dist/run.js +3 -2
- package/dist/stream.d.ts +8 -1
- package/dist/stream.js +24 -2
- package/dist/test/fake.d.ts +88 -0
- package/dist/test/fake.js +845 -0
- package/dist/test/index.d.ts +58 -0
- package/dist/test/index.js +57 -0
- package/dist/test/procedures.d.ts +18 -0
- package/dist/test/procedures.js +219 -0
- package/dist/timeout.d.ts +29 -0
- package/dist/timeout.js +67 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +2 -0
- package/dist/wait.js +15 -12
- package/dist/watch.js +15 -2
- package/package.json +19 -3
package/dist/errors.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { BinaryReader, WireType } from "@bufbuild/protobuf/wire";
|
|
2
|
+
import { ConnectError } from "@connectrpc/connect";
|
|
1
3
|
/** A command that ended non-zero, or was cancelled before it had a status (errors.go:9-26). */
|
|
2
4
|
export class ExitError extends Error {
|
|
3
5
|
/** The execution the exit belongs to. */
|
|
@@ -75,3 +77,137 @@ function describe(cause) {
|
|
|
75
77
|
}
|
|
76
78
|
return "the stream ended";
|
|
77
79
|
}
|
|
80
|
+
/** The reasons a call is refused for a product. */
|
|
81
|
+
export const ProductReason = {
|
|
82
|
+
/** The deployment's build does not include the product; the code is Unimplemented. */
|
|
83
|
+
NotInstalled: "PRODUCT_NOT_INSTALLED",
|
|
84
|
+
/** The deployment turned the product off; the code is FailedPrecondition. */
|
|
85
|
+
Disabled: "PRODUCT_DISABLED",
|
|
86
|
+
/** The workspace's entitlements leave the product out; the code is PermissionDenied. */
|
|
87
|
+
NotEntitled: "PRODUCT_NOT_ENTITLED",
|
|
88
|
+
/**
|
|
89
|
+
* The workspace's settings turn the product off, or an outside product's
|
|
90
|
+
* installation is turned off; the code is FailedPrecondition.
|
|
91
|
+
*/
|
|
92
|
+
TurnedOff: "PRODUCT_TURNED_OFF",
|
|
93
|
+
/**
|
|
94
|
+
* Turning an outside product on installs it, and the call did not accept the
|
|
95
|
+
* access it asks for; the code is FailedPrecondition.
|
|
96
|
+
*/
|
|
97
|
+
AccessNotAccepted: "ACCESS_NOT_ACCEPTED",
|
|
98
|
+
};
|
|
99
|
+
const productReasons = new Set(Object.values(ProductReason));
|
|
100
|
+
// The ErrorInfo domain of a product's refusal.
|
|
101
|
+
const productErrorDomain = "toshi.run";
|
|
102
|
+
/**
|
|
103
|
+
* The API's refusal of a call for a product: one that is off for the
|
|
104
|
+
* workspace, or an outside product whose access the call did not accept.
|
|
105
|
+
* Every call the client makes throws it in place of the ConnectError, wait,
|
|
106
|
+
* watch and execute included. It is a ConnectError, so `instanceof
|
|
107
|
+
* ConnectError` and `code` read as before; test for it with
|
|
108
|
+
* {@link isProductError}.
|
|
109
|
+
*/
|
|
110
|
+
export class ProductError extends ConnectError {
|
|
111
|
+
/** The product's ID, such as `runners`. */
|
|
112
|
+
product;
|
|
113
|
+
reason;
|
|
114
|
+
/** The setting that turns the product on, such as `runners.enabled`; empty for ACCESS_NOT_ACCEPTED. */
|
|
115
|
+
feature;
|
|
116
|
+
/** How far a product the deployment disables has wound down: `no_new_work`, `draining` or `stopped`; empty otherwise. */
|
|
117
|
+
state;
|
|
118
|
+
/** The access an outside product asks for, for ACCESS_NOT_ACCEPTED: accept exactly this list to install it. */
|
|
119
|
+
access;
|
|
120
|
+
constructor(err, reason, metadata) {
|
|
121
|
+
super(err.rawMessage, err.code, err.metadata, undefined, err);
|
|
122
|
+
// ConnectError's instanceof accepts a subclass only by this name.
|
|
123
|
+
this.name = "ConnectError";
|
|
124
|
+
this.details = err.details;
|
|
125
|
+
this.product = metadata.get("product") ?? "";
|
|
126
|
+
this.reason = reason;
|
|
127
|
+
this.feature = metadata.get("feature") ?? "";
|
|
128
|
+
this.state = metadata.get("state") ?? "";
|
|
129
|
+
const access = metadata.get("access") ?? "";
|
|
130
|
+
this.access = access === "" ? [] : access.split(",");
|
|
131
|
+
}
|
|
132
|
+
// ConnectError's own check would accept any ConnectError.
|
|
133
|
+
static [Symbol.hasInstance](v) {
|
|
134
|
+
return Function.prototype[Symbol.hasInstance].call(ProductError, v);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Reports whether err is a product's refusal. */
|
|
138
|
+
export function isProductError(err) {
|
|
139
|
+
return err instanceof ProductError;
|
|
140
|
+
}
|
|
141
|
+
/** err as a ProductError when it is a product's refusal, and err unchanged otherwise. */
|
|
142
|
+
export function asProductError(err) {
|
|
143
|
+
if (!(err instanceof ConnectError) || err instanceof ProductError) {
|
|
144
|
+
return err;
|
|
145
|
+
}
|
|
146
|
+
for (const detail of err.details) {
|
|
147
|
+
if (!("type" in detail) || detail.type !== "google.rpc.ErrorInfo") {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const info = decodeErrorInfo(detail.value);
|
|
151
|
+
if (info === undefined || info.domain !== productErrorDomain || !productReasons.has(info.reason)) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
return new ProductError(err, info.reason, info.metadata);
|
|
155
|
+
}
|
|
156
|
+
return err;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Reads a google.rpc.ErrorInfo message: reason (1), domain (2) and metadata
|
|
160
|
+
* (3), a map of strings. It reads the wire format itself, so the SDK needs no
|
|
161
|
+
* package for the googleapis types.
|
|
162
|
+
*/
|
|
163
|
+
function decodeErrorInfo(bytes) {
|
|
164
|
+
const info = { reason: "", domain: "", metadata: new Map() };
|
|
165
|
+
try {
|
|
166
|
+
const reader = new BinaryReader(bytes);
|
|
167
|
+
while (reader.pos < reader.len) {
|
|
168
|
+
const [field, wireType] = reader.tag();
|
|
169
|
+
if (wireType !== WireType.LengthDelimited) {
|
|
170
|
+
reader.skip(wireType);
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
switch (field) {
|
|
174
|
+
case 1:
|
|
175
|
+
info.reason = reader.string();
|
|
176
|
+
break;
|
|
177
|
+
case 2:
|
|
178
|
+
info.domain = reader.string();
|
|
179
|
+
break;
|
|
180
|
+
case 3: {
|
|
181
|
+
const [key, value] = decodeMapEntry(reader.bytes());
|
|
182
|
+
info.metadata.set(key, value);
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
default:
|
|
186
|
+
reader.skip(wireType);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
return info;
|
|
194
|
+
}
|
|
195
|
+
/** Reads one entry of a map<string, string>: key (1), value (2). */
|
|
196
|
+
function decodeMapEntry(bytes) {
|
|
197
|
+
let key = "";
|
|
198
|
+
let value = "";
|
|
199
|
+
const reader = new BinaryReader(bytes);
|
|
200
|
+
while (reader.pos < reader.len) {
|
|
201
|
+
const [field, wireType] = reader.tag();
|
|
202
|
+
if (wireType === WireType.LengthDelimited && field === 1) {
|
|
203
|
+
key = reader.string();
|
|
204
|
+
}
|
|
205
|
+
else if (wireType === WireType.LengthDelimited && field === 2) {
|
|
206
|
+
value = reader.string();
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
reader.skip(wireType);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return [key, value];
|
|
213
|
+
}
|
package/dist/execute.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Code, ConnectError } from "@connectrpc/connect";
|
|
|
3
3
|
import { createWritableIterable } from "@connectrpc/connect/protocol";
|
|
4
4
|
import { ExitError, StreamLostError } from "./errors.js";
|
|
5
5
|
import { isStreamLoss } from "./retry.js";
|
|
6
|
+
import { startDeadline, timeoutError } from "./timeout.js";
|
|
6
7
|
import { ExecuteRequestSchema, ExecuteStartSchema, } from "./gen/toshi/workspace/v1/workspace_pb.js";
|
|
7
8
|
// The largest standard-input frame Execute sends (execute.go:14-16).
|
|
8
9
|
const STDIN_CHUNK = 64 << 10;
|
|
@@ -35,13 +36,24 @@ export async function executeCommand(service, start, opts) {
|
|
|
35
36
|
}
|
|
36
37
|
owner.process.cancel();
|
|
37
38
|
};
|
|
39
|
+
// A timeout bounds the handshake only; the process outlives it.
|
|
40
|
+
const deadline = startDeadline(opts?.timeoutMs, opts?.signal);
|
|
41
|
+
const onDeadline = () => {
|
|
42
|
+
if (owner.process === undefined) {
|
|
43
|
+
abort.abort(deadline?.signal.reason);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
38
46
|
// A signal that is already aborted starts nothing.
|
|
39
47
|
if (signal?.aborted === true) {
|
|
48
|
+
deadline?.clear();
|
|
40
49
|
throw cancelledError();
|
|
41
50
|
}
|
|
42
51
|
signal?.addEventListener("abort", onAbort, { once: true });
|
|
52
|
+
deadline?.signal.addEventListener("abort", onDeadline, { once: true });
|
|
43
53
|
const finishHandshake = () => {
|
|
44
54
|
signal?.removeEventListener("abort", onAbort);
|
|
55
|
+
deadline?.signal.removeEventListener("abort", onDeadline);
|
|
56
|
+
deadline?.clear();
|
|
45
57
|
};
|
|
46
58
|
const responses = service.execute(input, { signal: abort.signal });
|
|
47
59
|
const responseIterator = responses[Symbol.asyncIterator]();
|
|
@@ -73,6 +85,9 @@ export async function executeCommand(service, start, opts) {
|
|
|
73
85
|
if (signal !== undefined && signal.aborted) {
|
|
74
86
|
throw cancelledError();
|
|
75
87
|
}
|
|
88
|
+
if (deadline?.timedOut === true) {
|
|
89
|
+
throw timeoutError(opts?.timeoutMs);
|
|
90
|
+
}
|
|
76
91
|
throw beforeStarted(err, readRequestKey(startMessage));
|
|
77
92
|
}
|
|
78
93
|
const message = first.done === true ? undefined : first.value.message;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { GenExtension, GenFile } from "@bufbuild/protobuf/codegenv2";
|
|
2
|
+
import type { MethodOptions } from "@bufbuild/protobuf/wkt";
|
|
3
|
+
/**
|
|
4
|
+
* Describes the file toshi/permission.proto.
|
|
5
|
+
*/
|
|
6
|
+
export declare const file_toshi_permission: GenFile;
|
|
7
|
+
/**
|
|
8
|
+
* permission names what a caller needs to make the call: an area and a
|
|
9
|
+
* level. "<area>.read" sees what the area holds and "<area>.write" changes
|
|
10
|
+
* it, where the area is a product, such as "sandboxes", or a part of the
|
|
11
|
+
* workspace, such as "secrets". A call that needs more than its area's
|
|
12
|
+
* level names a permission of its own, such as "debug.connect" for the key
|
|
13
|
+
* into a host job's debug session.
|
|
14
|
+
*
|
|
15
|
+
* Every Workspace API method carries it, and a method without it fails the
|
|
16
|
+
* build: the control plane's check table and the permissions page are
|
|
17
|
+
* generated from it. A workspace that is suspended keeps the calls whose
|
|
18
|
+
* level is "read".
|
|
19
|
+
*
|
|
20
|
+
* @generated from extension: string permission = 51000;
|
|
21
|
+
*/
|
|
22
|
+
export declare const permission: GenExtension<MethodOptions, string>;
|
|
23
|
+
/**
|
|
24
|
+
* scope names what a call acts in: "workspace", the default when the
|
|
25
|
+
* option is absent, or "project" or "environment" for a call that names a
|
|
26
|
+
* project or an environment of the workspace, or a resource that belongs
|
|
27
|
+
* to one. A token limited to a project, or to one of its environments,
|
|
28
|
+
* makes only the calls whose scope is "project" or "environment".
|
|
29
|
+
*
|
|
30
|
+
* A method whose request has a project or environment field (project,
|
|
31
|
+
* project_id, environment, environment_id) names its scope, and the build
|
|
32
|
+
* checks it against that field: "environment" when the request has an
|
|
33
|
+
* environment field, "project" when it has only a project field, or
|
|
34
|
+
* "workspace" when the field is not where the call acts, such as the
|
|
35
|
+
* project a new token is limited to.
|
|
36
|
+
*
|
|
37
|
+
* @generated from extension: string scope = 51001;
|
|
38
|
+
*/
|
|
39
|
+
export declare const scope: GenExtension<MethodOptions, string>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.16.0 with parameter "target=ts,json_types=true,import_extension=js"
|
|
2
|
+
// @generated from file toshi/permission.proto (package toshi, syntax proto3)
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
import { extDesc, fileDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
|
+
import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
|
|
6
|
+
/**
|
|
7
|
+
* Describes the file toshi/permission.proto.
|
|
8
|
+
*/
|
|
9
|
+
export const file_toshi_permission = /*@__PURE__*/ fileDesc("ChZ0b3NoaS9wZXJtaXNzaW9uLnByb3RvEgV0b3NoaTpACgpwZXJtaXNzaW9uEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuI4DIAEoCVIKcGVybWlzc2lvbjo2CgVzY29wZRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLmOAyABKAlSBXNjb3BlQh5aHGdvLnRvc2hpY2xvdWQuaW8vYXBpL3Rvc2hpcGJiBnByb3RvMw", [file_google_protobuf_descriptor]);
|
|
10
|
+
/**
|
|
11
|
+
* permission names what a caller needs to make the call: an area and a
|
|
12
|
+
* level. "<area>.read" sees what the area holds and "<area>.write" changes
|
|
13
|
+
* it, where the area is a product, such as "sandboxes", or a part of the
|
|
14
|
+
* workspace, such as "secrets". A call that needs more than its area's
|
|
15
|
+
* level names a permission of its own, such as "debug.connect" for the key
|
|
16
|
+
* into a host job's debug session.
|
|
17
|
+
*
|
|
18
|
+
* Every Workspace API method carries it, and a method without it fails the
|
|
19
|
+
* build: the control plane's check table and the permissions page are
|
|
20
|
+
* generated from it. A workspace that is suspended keeps the calls whose
|
|
21
|
+
* level is "read".
|
|
22
|
+
*
|
|
23
|
+
* @generated from extension: string permission = 51000;
|
|
24
|
+
*/
|
|
25
|
+
export const permission = /*@__PURE__*/ extDesc(file_toshi_permission, 0);
|
|
26
|
+
/**
|
|
27
|
+
* scope names what a call acts in: "workspace", the default when the
|
|
28
|
+
* option is absent, or "project" or "environment" for a call that names a
|
|
29
|
+
* project or an environment of the workspace, or a resource that belongs
|
|
30
|
+
* to one. A token limited to a project, or to one of its environments,
|
|
31
|
+
* makes only the calls whose scope is "project" or "environment".
|
|
32
|
+
*
|
|
33
|
+
* A method whose request has a project or environment field (project,
|
|
34
|
+
* project_id, environment, environment_id) names its scope, and the build
|
|
35
|
+
* checks it against that field: "environment" when the request has an
|
|
36
|
+
* environment field, "project" when it has only a project field, or
|
|
37
|
+
* "workspace" when the field is not where the call acts, such as the
|
|
38
|
+
* project a new token is limited to.
|
|
39
|
+
*
|
|
40
|
+
* @generated from extension: string scope = 51001;
|
|
41
|
+
*/
|
|
42
|
+
export const scope = /*@__PURE__*/ extDesc(file_toshi_permission, 1);
|
|
@@ -757,7 +757,7 @@ export declare const GetArtifactDownloadURLResponseSchema: GenMessage<GetArtifac
|
|
|
757
757
|
* it reserves an artifact, uploads each part to a presigned URL, and
|
|
758
758
|
* completes the upload. The caller is the workload itself: every call
|
|
759
759
|
* carries a workload identity token for the audience
|
|
760
|
-
* "toshi:artifacts", and the
|
|
760
|
+
* "toshi:artifacts", and the workspace, project, environment, workload and
|
|
761
761
|
* execution of the artifact are the token's claims, never the request's.
|
|
762
762
|
* A token of another audience, a display token, an expired token, or one
|
|
763
763
|
* that names no workload is refused with UNAUTHENTICATED. A workspace that
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
5
|
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
6
|
+
import { file_toshi_permission } from "../../permission_pb.js";
|
|
6
7
|
import { file_toshi_workspace_v1_recordings } from "./recordings_pb.js";
|
|
7
8
|
/**
|
|
8
9
|
* Describes the file toshi/workspace/v1/artifacts.proto.
|
|
9
10
|
*/
|
|
10
|
-
export const file_toshi_workspace_v1_artifacts = /*@__PURE__*/ fileDesc("
|
|
11
|
+
export const file_toshi_workspace_v1_artifacts = /*@__PURE__*/ fileDesc("CiJ0b3NoaS93b3Jrc3BhY2UvdjEvYXJ0aWZhY3RzLnByb3RvEhJ0b3NoaS53b3Jrc3BhY2UudjEi9wIKCEFydGlmYWN0EgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFgoOZW52aXJvbm1lbnRfaWQYAyABKAkSEwoLd29ya2xvYWRfaWQYBCABKAkSFAoMZXhlY3V0aW9uX2lkGAUgASgJEgwKBGtpbmQYBiABKAkSDAoEbmFtZRgHIAEoCRIUCgxjb250ZW50X3R5cGUYCCABKAkSEgoKcGFydF9jb3VudBgJIAEoAxISCgpwYXJ0X3NpemVzGAogAygDEhIKCmluZGV4X3NpemUYCyABKAMSDQoFc3RhdGUYDCABKAkSEgoKZW5jcnlwdGlvbhgNIAEoCRIuCgpjcmVhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxjb21wbGV0ZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDXdvcmtsb2FkX2tpbmQYECABKAkizQEKBlVwbG9hZBIMCgRwYXJ0GAEgASgJEg4KBm1ldGhvZBgCIAEoCRILCgN1cmwYAyABKAkSOAoHaGVhZGVycxgEIAMoCzInLnRvc2hpLndvcmtzcGFjZS52MS5VcGxvYWQuSGVhZGVyc0VudHJ5Ei4KCmV4cGlyZXNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIqYBChRSZXNlcnZlVXBsb2FkUmVxdWVzdBIMCgRraW5kGAEgASgJEgwKBG5hbWUYAiABKAkSFAoMY29udGVudF90eXBlGAMgASgJEhIKCnBhcnRfc2l6ZXMYBCADKAMSEgoKaW5kZXhfc2l6ZRgFIAEoAxI0CglyZWNvcmRpbmcYBiABKA4yIS50b3NoaS53b3Jrc3BhY2UudjEuUmVjb3JkaW5nS2luZCLKAQoVUmVzZXJ2ZVVwbG9hZFJlc3BvbnNlEhMKC2FydGlmYWN0X2lkGAEgASgJEisKB3VwbG9hZHMYAiADKAsyGi50b3NoaS53b3Jrc3BhY2UudjEuVXBsb2FkEjMKD3VwbG9hZF9kZWFkbGluZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZW5jcnlwdGlvbhgEIAEoCRIQCghkYXRhX2tleRgFIAEoDBIUCgxndWVzdF91cGxvYWQYBiABKAgiLAoVQ29tcGxldGVVcGxvYWRSZXF1ZXN0EhMKC2FydGlmYWN0X2lkGAEgASgJIkgKFkNvbXBsZXRlVXBsb2FkUmVzcG9uc2USLgoIYXJ0aWZhY3QYASABKAsyHC50b3NoaS53b3Jrc3BhY2UudjEuQXJ0aWZhY3QiogEKFExpc3RBcnRpZmFjdHNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSFgoOZW52aXJvbm1lbnRfaWQYAiABKAkSEwoLd29ya2xvYWRfaWQYAyABKAkSFAoMZXhlY3V0aW9uX2lkGAQgASgJEgwKBGtpbmQYBSABKAkSEQoJcGFnZV9zaXplGAYgASgFEhIKCnBhZ2VfdG9rZW4YByABKAkiYQoVTGlzdEFydGlmYWN0c1Jlc3BvbnNlEi8KCWFydGlmYWN0cxgBIAMoCzIcLnRvc2hpLndvcmtzcGFjZS52MS5BcnRpZmFjdBIXCg9uZXh0X3BhZ2VfdG9rZW4YAiABKAkiKQoSR2V0QXJ0aWZhY3RSZXF1ZXN0EhMKC2FydGlmYWN0X2lkGAEgASgJIkUKE0dldEFydGlmYWN0UmVzcG9uc2USLgoIYXJ0aWZhY3QYASABKAsyHC50b3NoaS53b3Jrc3BhY2UudjEuQXJ0aWZhY3QiVwodR2V0QXJ0aWZhY3REb3dubG9hZFVSTFJlcXVlc3QSEwoLYXJ0aWZhY3RfaWQYASABKAkSDAoEcGFydBgCIAEoCRITCgt0dGxfc2Vjb25kcxgDIAEoAyKDAQoeR2V0QXJ0aWZhY3REb3dubG9hZFVSTFJlc3BvbnNlEgsKA3VybBgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgplbmNyeXB0aW9uGAMgASgJEhAKCGRhdGFfa2V5GAQgASgMMpACChVBcnRpZmFjdFVwbG9hZFNlcnZpY2USeQoNUmVzZXJ2ZVVwbG9hZBIoLnRvc2hpLndvcmtzcGFjZS52MS5SZXNlcnZlVXBsb2FkUmVxdWVzdBopLnRvc2hpLndvcmtzcGFjZS52MS5SZXNlcnZlVXBsb2FkUmVzcG9uc2UiE8LzGA9hcnRpZmFjdHMud3JpdGUSfAoOQ29tcGxldGVVcGxvYWQSKS50b3NoaS53b3Jrc3BhY2UudjEuQ29tcGxldGVVcGxvYWRSZXF1ZXN0GioudG9zaGkud29ya3NwYWNlLnYxLkNvbXBsZXRlVXBsb2FkUmVzcG9uc2UiE8LzGA9hcnRpZmFjdHMud3JpdGUyxAMKD0FydGlmYWN0U2VydmljZRKHAQoNTGlzdEFydGlmYWN0cxIoLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0QXJ0aWZhY3RzUmVxdWVzdBopLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0QXJ0aWZhY3RzUmVzcG9uc2UiIcLzGA5hcnRpZmFjdHMucmVhZMrzGAtlbnZpcm9ubWVudBKBAQoLR2V0QXJ0aWZhY3QSJi50b3NoaS53b3Jrc3BhY2UudjEuR2V0QXJ0aWZhY3RSZXF1ZXN0GicudG9zaGkud29ya3NwYWNlLnYxLkdldEFydGlmYWN0UmVzcG9uc2UiIcLzGA5hcnRpZmFjdHMucmVhZMrzGAtlbnZpcm9ubWVudBKiAQoWR2V0QXJ0aWZhY3REb3dubG9hZFVSTBIxLnRvc2hpLndvcmtzcGFjZS52MS5HZXRBcnRpZmFjdERvd25sb2FkVVJMUmVxdWVzdBoyLnRvc2hpLndvcmtzcGFjZS52MS5HZXRBcnRpZmFjdERvd25sb2FkVVJMUmVzcG9uc2UiIcLzGA5hcnRpZmFjdHMucmVhZMrzGAtlbnZpcm9ubWVudEIiWiBnby50b3NoaWNsb3VkLmlvL2FwaS93b3Jrc3BhY2V2MWIGcHJvdG8z", [file_google_protobuf_timestamp, file_toshi_permission, file_toshi_workspace_v1_recordings]);
|
|
11
12
|
/**
|
|
12
13
|
* Describes the message toshi.workspace.v1.Artifact.
|
|
13
14
|
* Use `create(ArtifactSchema)` to create a new message.
|
|
@@ -73,7 +74,7 @@ export const GetArtifactDownloadURLResponseSchema = /*@__PURE__*/ messageDesc(fi
|
|
|
73
74
|
* it reserves an artifact, uploads each part to a presigned URL, and
|
|
74
75
|
* completes the upload. The caller is the workload itself: every call
|
|
75
76
|
* carries a workload identity token for the audience
|
|
76
|
-
* "toshi:artifacts", and the
|
|
77
|
+
* "toshi:artifacts", and the workspace, project, environment, workload and
|
|
77
78
|
* execution of the artifact are the token's claims, never the request's.
|
|
78
79
|
* A token of another audience, a display token, an expired token, or one
|
|
79
80
|
* that names no workload is refused with UNAUTHENTICATED. A workspace that
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
5
|
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
6
|
+
import { file_toshi_permission } from "../../permission_pb.js";
|
|
6
7
|
/**
|
|
7
8
|
* Describes the file toshi/workspace/v1/audit_events.proto.
|
|
8
9
|
*/
|
|
9
|
-
export const file_toshi_workspace_v1_audit_events = /*@__PURE__*/ fileDesc("
|
|
10
|
+
export const file_toshi_workspace_v1_audit_events = /*@__PURE__*/ fileDesc("CiV0b3NoaS93b3Jrc3BhY2UvdjEvYXVkaXRfZXZlbnRzLnByb3RvEhJ0b3NoaS53b3Jrc3BhY2UudjEisAEKCkF1ZGl0RXZlbnQSCgoCaWQYASABKAMSJgoCYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmFjdG9yX2tpbmQYAyABKAkSEAoIYWN0b3JfaWQYBCABKAkSDgoGYWN0aW9uGAUgASgJEg4KBnRhcmdldBgGIAEoCRIUCgxkZXRhaWxzX2pzb24YByABKAkSEgoKcmVxdWVzdF9pZBgIIAEoCSKqAQoWTGlzdEF1ZGl0RXZlbnRzUmVxdWVzdBIOCgZhY3Rpb24YASABKAkSKQoFc2luY2UYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXBhZ2Vfc2l6ZRgDIAEoBRINCgVhY3RvchgEIAEoCRIPCgdhY3Rpb25zGAUgAygJEg4KBnRhcmdldBgGIAEoCRISCgpwYWdlX3Rva2VuGAcgASgJImIKF0xpc3RBdWRpdEV2ZW50c1Jlc3BvbnNlEi4KBmV2ZW50cxgBIAMoCzIeLnRvc2hpLndvcmtzcGFjZS52MS5BdWRpdEV2ZW50EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCTKPAQoRQXVkaXRFdmVudFNlcnZpY2USegoPTGlzdEF1ZGl0RXZlbnRzEioudG9zaGkud29ya3NwYWNlLnYxLkxpc3RBdWRpdEV2ZW50c1JlcXVlc3QaKy50b3NoaS53b3Jrc3BhY2UudjEuTGlzdEF1ZGl0RXZlbnRzUmVzcG9uc2UiDsLzGAphdWRpdC5yZWFkQiJaIGdvLnRvc2hpY2xvdWQuaW8vYXBpL3dvcmtzcGFjZXYxYgZwcm90bzM", [file_google_protobuf_timestamp, file_toshi_permission]);
|
|
10
11
|
/**
|
|
11
12
|
* Describes the message toshi.workspace.v1.AuditEvent.
|
|
12
13
|
* Use `create(AuditEventSchema)` to create a new message.
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
5
|
import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
6
|
+
import { file_toshi_permission } from "../../permission_pb.js";
|
|
6
7
|
/**
|
|
7
8
|
* Describes the file toshi/workspace/v1/channels.proto.
|
|
8
9
|
*/
|
|
9
|
-
export const file_toshi_workspace_v1_channels = /*@__PURE__*/ fileDesc("CiF0b3NoaS93b3Jrc3BhY2UvdjEvY2hhbm5lbHMucHJvdG8SEnRvc2hpLndvcmtzcGFjZS52MSLJBAoHQ2hhbm5lbBIKCgJpZBgBIAEoCRIOCgZqb2JfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIvCgVzaGFwZRgEIAEoDjIgLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsU2hhcGUSDAoEcG9ydBgFIAEoBRIPCgdjb21tYW5kGAYgAygJEi8KBXN0YXRlGAcgASgOMiAudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxTdGF0ZRISCgpjcmVhdGVkX2J5GAggASgJEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCGVuZGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgplbmRfcmVhc29uGAsgASgJEhYKCWV4aXRfY29kZRgMIAEoBUgAiAEBEg0KBW93bmVyGA0gASgJEhQKDG91dHB1dF9zdGFydBgOIAEoAxITCgtvdXRwdXRfbmV4dBgPIAEoAxIUCgxpbnB1dF9jbG9zZWQYECABKAgSFwoPcmVxdWVzdHNfb2xkZXN0GBEgASgDEhcKD3JlcXVlc3RzX25ld2VzdBgSIAEoAxIxCgZwb2xpY3kYEyABKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbFBvbGljeRIyCgdjbGllbnRzGBQgAygLMiEudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxDbGllbnRCDAoKX2V4aXRfY29kZSLDAgoNQ2hhbm5lbENsaWVudBIKCgJpZBgBIAEoCRIzCgRtb2RlGAIgASgOMiUudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxBdHRhY2hNb2RlEhMKC2F0dGFjaGVkX2J5GAMgASgJEg4KBmRldmljZRgEIAEoCRISCgpjcmVkZW50aWFsGAUgASgJEjIKDmF0dGFjaGVkX3NpbmNlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdzZWVuX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtkZXRhY2hlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMb3V0cHV0X2Fja2VkGAkgASgDEhAKCGF0dGFjaGVkGAogASgIIq8BCg1DaGFubmVsUG9saWN5Eg8KB3ZlcnNpb24YASABKAMSDgoGYXR0YWNoGAIgASgJEhgKC21heF9jbGllbnRzGAMgASgFSACIAQESDQoFaW5wdXQYBCABKAkSDAoEa2VlcBgFIAEoCRI2Cgdtb2R1bGVzGAYgASgLMiUudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxNb2R1bGVMaXN0Qg4KDF9tYXhfY2xpZW50cyJHChFDaGFubmVsTW9kdWxlTGlzdBIyCgdtb2R1bGVzGAEgAygLMiEudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxNb2R1bGUifwoNQ2hhbm5lbE1vZHVsZRIMCgRraW5kGAEgASgJEi8KBW1hdGNoGAIgASgLMiAudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxNYXRjaBIOCgZyYW5nZXMYAyADKAkSDQoFbGV2ZWwYBCABKAkSEAoIYm9keV9jYXAYBSABKAMirQEKDENoYW5uZWxNYXRjaBINCgVob3N0cxgBIAMoCRINCgVwYXRocxgCIAMoCRIPCgdtZXRob2RzGAMgAygJEj4KB2hlYWRlcnMYBCADKAsyLS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbE1hdGNoLkhlYWRlcnNFbnRyeRouCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLwBAoOQ2hhbm5lbFJlcXVlc3QSCwoDc2VxGAEgASgDEi4KCmFycml2ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBGhvc3QYAyABKAkSDgoGbWV0aG9kGAQgASgJEgwKBHBhdGgYBSABKAkSDgoGc3RhdHVzGAYgASgFEhUKDXJlcXVlc3RfYnl0ZXMYByABKAMSFgoOcmVzcG9uc2VfYnl0ZXMYCCABKAMSKwoIZHVyYXRpb24YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SOAoGY2FsbGVyGAogASgLMigudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxSZXF1ZXN0Q2FsbGVyEg8KB2FkZHJlc3MYCyABKAkSEgoKcmVmdXNlZF9ieRgMIAEoCRIRCgl3ZWJzb2NrZXQYDSABKAgSDQoFbGV2ZWwYDiABKAkSDQoFcXVlcnkYDyABKAkSEQoJcXVlcnlfY3V0GBAgASgIEjoKD3JlcXVlc3RfaGVhZGVycxgRIAMoCzIhLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsSGVhZGVyEjsKEHJlc3BvbnNlX2hlYWRlcnMYEiADKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbEhlYWRlchI1CgxyZXF1ZXN0X2JvZHkYEyABKAsyHy50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbEJvZHkSNgoNcmVzcG9uc2VfYm9keRgUIAEoCzIfLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsQm9keSJIChRDaGFubmVsUmVxdWVzdENhbGxlchIMCgR1c2VyGAEgASgJEg4KBmRldmljZRgCIAEoCRISCgpzaGFyZV9saW5rGAMgASgJIj0KDUNoYW5uZWxIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIPCgdyZW1vdmVkGAMgASgIIj4KC0NoYW5uZWxCb2R5EhQKDGNvbnRlbnRfdHlwZRgBIAEoCRIMCgRkYXRhGAIgASgMEgsKA2N1dBgDIAEoCCJ1CgdGb3J3YXJkEg4KBnRhcmdldBgBIAEoCRIKCgJieRgCIAEoCRIOCgZkZXZpY2UYAyABKAkSDwoHY2hhbm5lbBgEIAEoCRItCglvcGVuZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIrEBCgRMaW5rEhEKCWNvbm5lY3RlZBgBIAEoCBIpCgVzaW5jZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIY29ubmVjdHMYAyABKAUSDwoHc3RyZWFtcxgEIAEoBRISCgpsYXN0X2Vycm9yGAUgASgJEg8KB3JlcGxpY2EYBiABKAkSEAoIZm9yd2FyZHMYByABKAUSEQoJam9iX3N0YXRlGAggASgJIoYBChRDcmVhdGVDaGFubmVsUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRwb3J0GAMgASgFEg8KB2NvbW1hbmQYBCADKAkSMQoGcG9saWN5GAUgASgLMiEudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxQb2xpY3kiRQoVQ3JlYXRlQ2hhbm5lbFJlc3BvbnNlEiwKB2NoYW5uZWwYASABKAsyGy50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbCJMChNMaXN0Q2hhbm5lbHNSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIRCglwYWdlX3NpemUYAiABKAUSEgoKcGFnZV90b2tlbhgDIAEoCSJeChRMaXN0Q2hhbm5lbHNSZXNwb25zZRItCghjaGFubmVscxgBIAMoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSIxChFHZXRDaGFubmVsUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCSJCChJHZXRDaGFubmVsUmVzcG9uc2USLAoHY2hhbm5lbBgBIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsIjcKF0dldENoYW5uZWxQb2xpY3lSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJIk0KGEdldENoYW5uZWxQb2xpY3lSZXNwb25zZRIxCgZwb2xpY3kYASABKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbFBvbGljeSJqChdTZXRDaGFubmVsUG9saWN5UmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIxCgZwb2xpY3kYAyABKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbFBvbGljeSJNChhTZXRDaGFubmVsUG9saWN5UmVzcG9uc2USMQoGcG9saWN5GAEgASgLMiEudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxQb2xpY3kijQIKGkxpc3RDaGFubmVsUmVxdWVzdHNSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoBRISCgpwYWdlX3Rva2VuGAQgASgJEhEKCWFmdGVyX3NlcRgFIAEoAxIpCgVzaW5jZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKQoFdW50aWwYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnN0YXR1cxgIIAEoCRIMCgRob3N0GAkgASgJEg4KBm1ldGhvZBgKIAEoCRITCgtwYXRoX3ByZWZpeBgLIAEoCSKUAQobTGlzdENoYW5uZWxSZXF1ZXN0c1Jlc3BvbnNlEjQKCHJlcXVlc3RzGAEgAygLMiIudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxSZXF1ZXN0EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRISCgpvbGRlc3Rfc2VxGAMgASgDEhIKCm5ld2VzdF9zZXEYBCABKAMiRQoYR2V0Q2hhbm5lbFJlcXVlc3RSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEgsKA3NlcRgDIAEoAyJQChlHZXRDaGFubmVsUmVxdWVzdFJlc3BvbnNlEjMKB3JlcXVlc3QYASABKAsyIi50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbFJlcXVlc3Qi7gEKF0V4cG9ydENoYW5uZWxMb2dSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEisKA2xvZxgDIAEoDjIeLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsTG9nEhEKBGZyb20YBCABKANIAIgBARIPCgJ0bxgFIAEoA0gBiAEBEikKBXNpbmNlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIpCgV1bnRpbBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBwoFX2Zyb21CBQoDX3RvIm0KGEV4cG9ydENoYW5uZWxMb2dSZXNwb25zZRIMCgRkYXRhGAEgASgMEhEKCWZpbGVfbmFtZRgCIAEoCRIUCgxjb250ZW50X3R5cGUYAyABKAkSDAoEZnJvbRgEIAEoAxIMCgRuZXh0GAUgASgDIoUBCiBDcmVhdGVDaGFubmVsQ29ubmVjdFRva2VuUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIOCgZkZXZpY2UYAyABKAkSMwoEbW9kZRgEIAEoDjIlLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsQXR0YWNoTW9kZSLDAQohQ3JlYXRlQ2hhbm5lbENvbm5lY3RUb2tlblJlc3BvbnNlEgoKAmlkGAEgASgJEg0KBXRva2VuGAIgASgJEgsKA3VybBgDIAEoCRIuCgpleHBpcmVzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgl0cmFuc3BvcnQYBSABKAkSMwoEbW9kZRgGIAEoDjIlLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsQXR0YWNoTW9kZSJMCiBSZXZva2VDaGFubmVsQ29ubmVjdFRva2VuUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIKCgJpZBgDIAEoCSIjCiFSZXZva2VDaGFubmVsQ29ubmVjdFRva2VuUmVzcG9uc2UiNAoURGVsZXRlQ2hhbm5lbFJlcXVlc3QSDgoGam9iX2lkGAEgASgJEgwKBG5hbWUYAiABKAkiFwoVRGVsZXRlQ2hhbm5lbFJlc3BvbnNlIkwKE0xpc3RGb3J3YXJkc1JlcXVlc3QSDgoGam9iX2lkGAEgASgJEhEKCXBhZ2Vfc2l6ZRgCIAEoBRISCgpwYWdlX3Rva2VuGAMgASgJIl4KFExpc3RGb3J3YXJkc1Jlc3BvbnNlEi0KCGZvcndhcmRzGAEgAygLMhsudG9zaGkud29ya3NwYWNlLnYxLkZvcndhcmQSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIiAKDkdldExpbmtSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCSI5Cg9HZXRMaW5rUmVzcG9uc2USJgoEbGluaxgBIAEoCzIYLnRvc2hpLndvcmtzcGFjZS52MS5MaW5rKl8KDENoYW5uZWxTaGFwZRIdChlDSEFOTkVMX1NIQVBFX1VOU1BFQ0lGSUVEEAASFgoSQ0hBTk5FTF9TSEFQRV9IVFRQEAESGAoUQ0hBTk5FTF9TSEFQRV9TVFJFQU0QAiqTAQoMQ2hhbm5lbFN0YXRlEh0KGUNIQU5ORUxfU1RBVEVfVU5TUEVDSUZJRUQQABIWChJDSEFOTkVMX1NUQVRFX09QRU4QARIYChRDSEFOTkVMX1NUQVRFX0VYSVRFRBACEhkKFUNIQU5ORUxfU1RBVEVfQ0xPU0lORxADEhcKE0NIQU5ORUxfU1RBVEVfRU5ERUQQBCp6ChFDaGFubmVsQXR0YWNoTW9kZRIjCh9DSEFOTkVMX0FUVEFDSF9NT0RFX1VOU1BFQ0lGSUVEEAASHQoZQ0hBTk5FTF9BVFRBQ0hfTU9ERV9JTlBVVBABEiEKHUNIQU5ORUxfQVRUQUNIX01PREVfUkVBRF9PTkxZEAIqWwoKQ2hhbm5lbExvZxIbChdDSEFOTkVMX0xPR19VTlNQRUNJRklFRBAAEhYKEkNIQU5ORUxfTE9HX09VVFBVVBABEhgKFENIQU5ORUxfTE9HX1JFUVVFU1RTEAIyogsKDkNoYW5uZWxTZXJ2aWNlEmQKDUNyZWF0ZUNoYW5uZWwSKC50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hhbm5lbFJlcXVlc3QaKS50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hhbm5lbFJlc3BvbnNlEmEKDExpc3RDaGFubmVscxInLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0Q2hhbm5lbHNSZXF1ZXN0GigudG9zaGkud29ya3NwYWNlLnYxLkxpc3RDaGFubmVsc1Jlc3BvbnNlElsKCkdldENoYW5uZWwSJS50b3NoaS53b3Jrc3BhY2UudjEuR2V0Q2hhbm5lbFJlcXVlc3QaJi50b3NoaS53b3Jrc3BhY2UudjEuR2V0Q2hhbm5lbFJlc3BvbnNlEm0KEEdldENoYW5uZWxQb2xpY3kSKy50b3NoaS53b3Jrc3BhY2UudjEuR2V0Q2hhbm5lbFBvbGljeVJlcXVlc3QaLC50b3NoaS53b3Jrc3BhY2UudjEuR2V0Q2hhbm5lbFBvbGljeVJlc3BvbnNlEm0KEFNldENoYW5uZWxQb2xpY3kSKy50b3NoaS53b3Jrc3BhY2UudjEuU2V0Q2hhbm5lbFBvbGljeVJlcXVlc3QaLC50b3NoaS53b3Jrc3BhY2UudjEuU2V0Q2hhbm5lbFBvbGljeVJlc3BvbnNlEnYKE0xpc3RDaGFubmVsUmVxdWVzdHMSLi50b3NoaS53b3Jrc3BhY2UudjEuTGlzdENoYW5uZWxSZXF1ZXN0c1JlcXVlc3QaLy50b3NoaS53b3Jrc3BhY2UudjEuTGlzdENoYW5uZWxSZXF1ZXN0c1Jlc3BvbnNlEnAKEUdldENoYW5uZWxSZXF1ZXN0EiwudG9zaGkud29ya3NwYWNlLnYxLkdldENoYW5uZWxSZXF1ZXN0UmVxdWVzdBotLnRvc2hpLndvcmtzcGFjZS52MS5HZXRDaGFubmVsUmVxdWVzdFJlc3BvbnNlEm8KEEV4cG9ydENoYW5uZWxMb2cSKy50b3NoaS53b3Jrc3BhY2UudjEuRXhwb3J0Q2hhbm5lbExvZ1JlcXVlc3QaLC50b3NoaS53b3Jrc3BhY2UudjEuRXhwb3J0Q2hhbm5lbExvZ1Jlc3BvbnNlMAESiAEKGUNyZWF0ZUNoYW5uZWxDb25uZWN0VG9rZW4SNC50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hhbm5lbENvbm5lY3RUb2tlblJlcXVlc3QaNS50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hhbm5lbENvbm5lY3RUb2tlblJlc3BvbnNlEogBChlSZXZva2VDaGFubmVsQ29ubmVjdFRva2VuEjQudG9zaGkud29ya3NwYWNlLnYxLlJldm9rZUNoYW5uZWxDb25uZWN0VG9rZW5SZXF1ZXN0GjUudG9zaGkud29ya3NwYWNlLnYxLlJldm9rZUNoYW5uZWxDb25uZWN0VG9rZW5SZXNwb25zZRJkCg1EZWxldGVDaGFubmVsEigudG9zaGkud29ya3NwYWNlLnYxLkRlbGV0ZUNoYW5uZWxSZXF1ZXN0GikudG9zaGkud29ya3NwYWNlLnYxLkRlbGV0ZUNoYW5uZWxSZXNwb25zZRJhCgxMaXN0Rm9yd2FyZHMSJy50b3NoaS53b3Jrc3BhY2UudjEuTGlzdEZvcndhcmRzUmVxdWVzdBooLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0Rm9yd2FyZHNSZXNwb25zZRJSCgdHZXRMaW5rEiIudG9zaGkud29ya3NwYWNlLnYxLkdldExpbmtSZXF1ZXN0GiMudG9zaGkud29ya3NwYWNlLnYxLkdldExpbmtSZXNwb25zZUItWitnaXRodWIuY29tL3Rvc2hpY2xvdWQvdG9zaGktYXBpL3dvcmtzcGFjZXYxYgZwcm90bzM", [file_google_protobuf_duration, file_google_protobuf_timestamp]);
|
|
10
|
+
export const file_toshi_workspace_v1_channels = /*@__PURE__*/ fileDesc("CiF0b3NoaS93b3Jrc3BhY2UvdjEvY2hhbm5lbHMucHJvdG8SEnRvc2hpLndvcmtzcGFjZS52MSLJBAoHQ2hhbm5lbBIKCgJpZBgBIAEoCRIOCgZqb2JfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIvCgVzaGFwZRgEIAEoDjIgLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsU2hhcGUSDAoEcG9ydBgFIAEoBRIPCgdjb21tYW5kGAYgAygJEi8KBXN0YXRlGAcgASgOMiAudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxTdGF0ZRISCgpjcmVhdGVkX2J5GAggASgJEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCGVuZGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBISCgplbmRfcmVhc29uGAsgASgJEhYKCWV4aXRfY29kZRgMIAEoBUgAiAEBEg0KBW93bmVyGA0gASgJEhQKDG91dHB1dF9zdGFydBgOIAEoAxITCgtvdXRwdXRfbmV4dBgPIAEoAxIUCgxpbnB1dF9jbG9zZWQYECABKAgSFwoPcmVxdWVzdHNfb2xkZXN0GBEgASgDEhcKD3JlcXVlc3RzX25ld2VzdBgSIAEoAxIxCgZwb2xpY3kYEyABKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbFBvbGljeRIyCgdjbGllbnRzGBQgAygLMiEudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxDbGllbnRCDAoKX2V4aXRfY29kZSLDAgoNQ2hhbm5lbENsaWVudBIKCgJpZBgBIAEoCRIzCgRtb2RlGAIgASgOMiUudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxBdHRhY2hNb2RlEhMKC2F0dGFjaGVkX2J5GAMgASgJEg4KBmRldmljZRgEIAEoCRISCgpjcmVkZW50aWFsGAUgASgJEjIKDmF0dGFjaGVkX3NpbmNlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdzZWVuX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgtkZXRhY2hlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMb3V0cHV0X2Fja2VkGAkgASgDEhAKCGF0dGFjaGVkGAogASgIIq8BCg1DaGFubmVsUG9saWN5Eg8KB3ZlcnNpb24YASABKAMSDgoGYXR0YWNoGAIgASgJEhgKC21heF9jbGllbnRzGAMgASgFSACIAQESDQoFaW5wdXQYBCABKAkSDAoEa2VlcBgFIAEoCRI2Cgdtb2R1bGVzGAYgASgLMiUudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxNb2R1bGVMaXN0Qg4KDF9tYXhfY2xpZW50cyJHChFDaGFubmVsTW9kdWxlTGlzdBIyCgdtb2R1bGVzGAEgAygLMiEudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxNb2R1bGUifwoNQ2hhbm5lbE1vZHVsZRIMCgRraW5kGAEgASgJEi8KBW1hdGNoGAIgASgLMiAudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxNYXRjaBIOCgZyYW5nZXMYAyADKAkSDQoFbGV2ZWwYBCABKAkSEAoIYm9keV9jYXAYBSABKAMirQEKDENoYW5uZWxNYXRjaBINCgVob3N0cxgBIAMoCRINCgVwYXRocxgCIAMoCRIPCgdtZXRob2RzGAMgAygJEj4KB2hlYWRlcnMYBCADKAsyLS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbE1hdGNoLkhlYWRlcnNFbnRyeRouCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLwBAoOQ2hhbm5lbFJlcXVlc3QSCwoDc2VxGAEgASgDEi4KCmFycml2ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBGhvc3QYAyABKAkSDgoGbWV0aG9kGAQgASgJEgwKBHBhdGgYBSABKAkSDgoGc3RhdHVzGAYgASgFEhUKDXJlcXVlc3RfYnl0ZXMYByABKAMSFgoOcmVzcG9uc2VfYnl0ZXMYCCABKAMSKwoIZHVyYXRpb24YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SOAoGY2FsbGVyGAogASgLMigudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxSZXF1ZXN0Q2FsbGVyEg8KB2FkZHJlc3MYCyABKAkSEgoKcmVmdXNlZF9ieRgMIAEoCRIRCgl3ZWJzb2NrZXQYDSABKAgSDQoFbGV2ZWwYDiABKAkSDQoFcXVlcnkYDyABKAkSEQoJcXVlcnlfY3V0GBAgASgIEjoKD3JlcXVlc3RfaGVhZGVycxgRIAMoCzIhLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsSGVhZGVyEjsKEHJlc3BvbnNlX2hlYWRlcnMYEiADKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbEhlYWRlchI1CgxyZXF1ZXN0X2JvZHkYEyABKAsyHy50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbEJvZHkSNgoNcmVzcG9uc2VfYm9keRgUIAEoCzIfLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsQm9keSJIChRDaGFubmVsUmVxdWVzdENhbGxlchIMCgR1c2VyGAEgASgJEg4KBmRldmljZRgCIAEoCRISCgpzaGFyZV9saW5rGAMgASgJIj0KDUNoYW5uZWxIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIPCgdyZW1vdmVkGAMgASgIIj4KC0NoYW5uZWxCb2R5EhQKDGNvbnRlbnRfdHlwZRgBIAEoCRIMCgRkYXRhGAIgASgMEgsKA2N1dBgDIAEoCCJ1CgdGb3J3YXJkEg4KBnRhcmdldBgBIAEoCRIKCgJieRgCIAEoCRIOCgZkZXZpY2UYAyABKAkSDwoHY2hhbm5lbBgEIAEoCRItCglvcGVuZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIrEBCgRMaW5rEhEKCWNvbm5lY3RlZBgBIAEoCBIpCgVzaW5jZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIY29ubmVjdHMYAyABKAUSDwoHc3RyZWFtcxgEIAEoBRISCgpsYXN0X2Vycm9yGAUgASgJEg8KB3JlcGxpY2EYBiABKAkSEAoIZm9yd2FyZHMYByABKAUSEQoJam9iX3N0YXRlGAggASgJIoYBChRDcmVhdGVDaGFubmVsUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRwb3J0GAMgASgFEg8KB2NvbW1hbmQYBCADKAkSMQoGcG9saWN5GAUgASgLMiEudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxQb2xpY3kiRQoVQ3JlYXRlQ2hhbm5lbFJlc3BvbnNlEiwKB2NoYW5uZWwYASABKAsyGy50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbCJMChNMaXN0Q2hhbm5lbHNSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIRCglwYWdlX3NpemUYAiABKAUSEgoKcGFnZV90b2tlbhgDIAEoCSJeChRMaXN0Q2hhbm5lbHNSZXNwb25zZRItCghjaGFubmVscxgBIAMoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCSIxChFHZXRDaGFubmVsUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCSJCChJHZXRDaGFubmVsUmVzcG9uc2USLAoHY2hhbm5lbBgBIAEoCzIbLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsIjcKF0dldENoYW5uZWxQb2xpY3lSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJIk0KGEdldENoYW5uZWxQb2xpY3lSZXNwb25zZRIxCgZwb2xpY3kYASABKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbFBvbGljeSJqChdTZXRDaGFubmVsUG9saWN5UmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIxCgZwb2xpY3kYAyABKAsyIS50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbFBvbGljeSJNChhTZXRDaGFubmVsUG9saWN5UmVzcG9uc2USMQoGcG9saWN5GAEgASgLMiEudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxQb2xpY3kijQIKGkxpc3RDaGFubmVsUmVxdWVzdHNSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoBRISCgpwYWdlX3Rva2VuGAQgASgJEhEKCWFmdGVyX3NlcRgFIAEoAxIpCgVzaW5jZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKQoFdW50aWwYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg4KBnN0YXR1cxgIIAEoCRIMCgRob3N0GAkgASgJEg4KBm1ldGhvZBgKIAEoCRITCgtwYXRoX3ByZWZpeBgLIAEoCSKUAQobTGlzdENoYW5uZWxSZXF1ZXN0c1Jlc3BvbnNlEjQKCHJlcXVlc3RzGAEgAygLMiIudG9zaGkud29ya3NwYWNlLnYxLkNoYW5uZWxSZXF1ZXN0EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRISCgpvbGRlc3Rfc2VxGAMgASgDEhIKCm5ld2VzdF9zZXEYBCABKAMiRQoYR2V0Q2hhbm5lbFJlcXVlc3RSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEgsKA3NlcRgDIAEoAyJQChlHZXRDaGFubmVsUmVxdWVzdFJlc3BvbnNlEjMKB3JlcXVlc3QYASABKAsyIi50b3NoaS53b3Jrc3BhY2UudjEuQ2hhbm5lbFJlcXVlc3Qi7gEKF0V4cG9ydENoYW5uZWxMb2dSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEisKA2xvZxgDIAEoDjIeLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsTG9nEhEKBGZyb20YBCABKANIAIgBARIPCgJ0bxgFIAEoA0gBiAEBEikKBXNpbmNlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIpCgV1bnRpbBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBwoFX2Zyb21CBQoDX3RvIm0KGEV4cG9ydENoYW5uZWxMb2dSZXNwb25zZRIMCgRkYXRhGAEgASgMEhEKCWZpbGVfbmFtZRgCIAEoCRIUCgxjb250ZW50X3R5cGUYAyABKAkSDAoEZnJvbRgEIAEoAxIMCgRuZXh0GAUgASgDIoUBCiBDcmVhdGVDaGFubmVsQ29ubmVjdFRva2VuUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIOCgZkZXZpY2UYAyABKAkSMwoEbW9kZRgEIAEoDjIlLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsQXR0YWNoTW9kZSLDAQohQ3JlYXRlQ2hhbm5lbENvbm5lY3RUb2tlblJlc3BvbnNlEgoKAmlkGAEgASgJEg0KBXRva2VuGAIgASgJEgsKA3VybBgDIAEoCRIuCgpleHBpcmVzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIRCgl0cmFuc3BvcnQYBSABKAkSMwoEbW9kZRgGIAEoDjIlLnRvc2hpLndvcmtzcGFjZS52MS5DaGFubmVsQXR0YWNoTW9kZSJMCiBSZXZva2VDaGFubmVsQ29ubmVjdFRva2VuUmVxdWVzdBIOCgZqb2JfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIKCgJpZBgDIAEoCSIjCiFSZXZva2VDaGFubmVsQ29ubmVjdFRva2VuUmVzcG9uc2UiNAoURGVsZXRlQ2hhbm5lbFJlcXVlc3QSDgoGam9iX2lkGAEgASgJEgwKBG5hbWUYAiABKAkiFwoVRGVsZXRlQ2hhbm5lbFJlc3BvbnNlIkwKE0xpc3RGb3J3YXJkc1JlcXVlc3QSDgoGam9iX2lkGAEgASgJEhEKCXBhZ2Vfc2l6ZRgCIAEoBRISCgpwYWdlX3Rva2VuGAMgASgJIl4KFExpc3RGb3J3YXJkc1Jlc3BvbnNlEi0KCGZvcndhcmRzGAEgAygLMhsudG9zaGkud29ya3NwYWNlLnYxLkZvcndhcmQSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJIiAKDkdldExpbmtSZXF1ZXN0Eg4KBmpvYl9pZBgBIAEoCSI5Cg9HZXRMaW5rUmVzcG9uc2USJgoEbGluaxgBIAEoCzIYLnRvc2hpLndvcmtzcGFjZS52MS5MaW5rKl8KDENoYW5uZWxTaGFwZRIdChlDSEFOTkVMX1NIQVBFX1VOU1BFQ0lGSUVEEAASFgoSQ0hBTk5FTF9TSEFQRV9IVFRQEAESGAoUQ0hBTk5FTF9TSEFQRV9TVFJFQU0QAiqTAQoMQ2hhbm5lbFN0YXRlEh0KGUNIQU5ORUxfU1RBVEVfVU5TUEVDSUZJRUQQABIWChJDSEFOTkVMX1NUQVRFX09QRU4QARIYChRDSEFOTkVMX1NUQVRFX0VYSVRFRBACEhkKFUNIQU5ORUxfU1RBVEVfQ0xPU0lORxADEhcKE0NIQU5ORUxfU1RBVEVfRU5ERUQQBCp6ChFDaGFubmVsQXR0YWNoTW9kZRIjCh9DSEFOTkVMX0FUVEFDSF9NT0RFX1VOU1BFQ0lGSUVEEAASHQoZQ0hBTk5FTF9BVFRBQ0hfTU9ERV9JTlBVVBABEiEKHUNIQU5ORUxfQVRUQUNIX01PREVfUkVBRF9PTkxZEAIqWwoKQ2hhbm5lbExvZxIbChdDSEFOTkVMX0xPR19VTlNQRUNJRklFRBAAEhYKEkNIQU5ORUxfTE9HX09VVFBVVBABEhgKFENIQU5ORUxfTE9HX1JFUVVFU1RTEAIyow0KDkNoYW5uZWxTZXJ2aWNlEngKDUNyZWF0ZUNoYW5uZWwSKC50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hhbm5lbFJlcXVlc3QaKS50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hhbm5lbFJlc3BvbnNlIhLC8xgOY2hhbm5lbHMud3JpdGUSdAoMTGlzdENoYW5uZWxzEicudG9zaGkud29ya3NwYWNlLnYxLkxpc3RDaGFubmVsc1JlcXVlc3QaKC50b3NoaS53b3Jrc3BhY2UudjEuTGlzdENoYW5uZWxzUmVzcG9uc2UiEcLzGA1jaGFubmVscy5yZWFkEm4KCkdldENoYW5uZWwSJS50b3NoaS53b3Jrc3BhY2UudjEuR2V0Q2hhbm5lbFJlcXVlc3QaJi50b3NoaS53b3Jrc3BhY2UudjEuR2V0Q2hhbm5lbFJlc3BvbnNlIhHC8xgNY2hhbm5lbHMucmVhZBKAAQoQR2V0Q2hhbm5lbFBvbGljeRIrLnRvc2hpLndvcmtzcGFjZS52MS5HZXRDaGFubmVsUG9saWN5UmVxdWVzdBosLnRvc2hpLndvcmtzcGFjZS52MS5HZXRDaGFubmVsUG9saWN5UmVzcG9uc2UiEcLzGA1jaGFubmVscy5yZWFkEoEBChBTZXRDaGFubmVsUG9saWN5EisudG9zaGkud29ya3NwYWNlLnYxLlNldENoYW5uZWxQb2xpY3lSZXF1ZXN0GiwudG9zaGkud29ya3NwYWNlLnYxLlNldENoYW5uZWxQb2xpY3lSZXNwb25zZSISwvMYDmNoYW5uZWxzLndyaXRlEokBChNMaXN0Q2hhbm5lbFJlcXVlc3RzEi4udG9zaGkud29ya3NwYWNlLnYxLkxpc3RDaGFubmVsUmVxdWVzdHNSZXF1ZXN0Gi8udG9zaGkud29ya3NwYWNlLnYxLkxpc3RDaGFubmVsUmVxdWVzdHNSZXNwb25zZSIRwvMYDWNoYW5uZWxzLnJlYWQSgwEKEUdldENoYW5uZWxSZXF1ZXN0EiwudG9zaGkud29ya3NwYWNlLnYxLkdldENoYW5uZWxSZXF1ZXN0UmVxdWVzdBotLnRvc2hpLndvcmtzcGFjZS52MS5HZXRDaGFubmVsUmVxdWVzdFJlc3BvbnNlIhHC8xgNY2hhbm5lbHMucmVhZBKCAQoQRXhwb3J0Q2hhbm5lbExvZxIrLnRvc2hpLndvcmtzcGFjZS52MS5FeHBvcnRDaGFubmVsTG9nUmVxdWVzdBosLnRvc2hpLndvcmtzcGFjZS52MS5FeHBvcnRDaGFubmVsTG9nUmVzcG9uc2UiEcLzGA1jaGFubmVscy5yZWFkMAESnAEKGUNyZWF0ZUNoYW5uZWxDb25uZWN0VG9rZW4SNC50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hhbm5lbENvbm5lY3RUb2tlblJlcXVlc3QaNS50b3NoaS53b3Jrc3BhY2UudjEuQ3JlYXRlQ2hhbm5lbENvbm5lY3RUb2tlblJlc3BvbnNlIhLC8xgOY2hhbm5lbHMud3JpdGUSnAEKGVJldm9rZUNoYW5uZWxDb25uZWN0VG9rZW4SNC50b3NoaS53b3Jrc3BhY2UudjEuUmV2b2tlQ2hhbm5lbENvbm5lY3RUb2tlblJlcXVlc3QaNS50b3NoaS53b3Jrc3BhY2UudjEuUmV2b2tlQ2hhbm5lbENvbm5lY3RUb2tlblJlc3BvbnNlIhLC8xgOY2hhbm5lbHMud3JpdGUSeAoNRGVsZXRlQ2hhbm5lbBIoLnRvc2hpLndvcmtzcGFjZS52MS5EZWxldGVDaGFubmVsUmVxdWVzdBopLnRvc2hpLndvcmtzcGFjZS52MS5EZWxldGVDaGFubmVsUmVzcG9uc2UiEsLzGA5jaGFubmVscy53cml0ZRJ0CgxMaXN0Rm9yd2FyZHMSJy50b3NoaS53b3Jrc3BhY2UudjEuTGlzdEZvcndhcmRzUmVxdWVzdBooLnRvc2hpLndvcmtzcGFjZS52MS5MaXN0Rm9yd2FyZHNSZXNwb25zZSIRwvMYDWNoYW5uZWxzLnJlYWQSZQoHR2V0TGluaxIiLnRvc2hpLndvcmtzcGFjZS52MS5HZXRMaW5rUmVxdWVzdBojLnRvc2hpLndvcmtzcGFjZS52MS5HZXRMaW5rUmVzcG9uc2UiEcLzGA1jaGFubmVscy5yZWFkQiJaIGdvLnRvc2hpY2xvdWQuaW8vYXBpL3dvcmtzcGFjZXYxYgZwcm90bzM", [file_google_protobuf_duration, file_google_protobuf_timestamp, file_toshi_permission]);
|
|
10
11
|
/**
|
|
11
12
|
* Describes the message toshi.workspace.v1.Channel.
|
|
12
13
|
* Use `create(ChannelSchema)` to create a new message.
|