@liquidmetal-ai/drizzle 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@liquidmetal-ai/drizzle",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Raindrop core operational libraries",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "prebuild": "npm install --ignore-scripts",
9
- "prepare": "npm run build",
9
+ "prepublishOnly": "npm run build",
10
10
  "build": "shx rm -rf dist && tsc -b",
11
11
  "format": "prettier --write \"**/*.{ts,tsx,md}\"",
12
12
  "lint": "eslint . --max-warnings=0",
@@ -30,7 +30,8 @@
30
30
  "shx": "^0.3.4",
31
31
  "typescript": "^5",
32
32
  "typescript-eslint": "^8.7.0",
33
- "vitest": "^2.1.1"
33
+ "vitest": "^2.1.1",
34
+ "@liquidmetal-ai/raindrop-framework": "*"
34
35
  },
35
36
  "dependencies": {
36
37
  "fflate": "^0.8.2"
@@ -195,7 +195,7 @@ application "foo" {
195
195
  ]);
196
196
  });
197
197
 
198
- test('service with labels and annotations', () => {
198
+ test('service with labels', () => {
199
199
  const CONFIG = `
200
200
  application "my-app" {
201
201
  service "my-service" {
@@ -203,11 +203,6 @@ application "my-app" {
203
203
  environment = "production"
204
204
  team = "platform"
205
205
  }
206
-
207
- annotations = {
208
- description = "Service for handling API requests"
209
- version = "1.0.0"
210
- }
211
206
  }
212
207
  }
213
208
  `;
@@ -223,21 +218,16 @@ application "my-app" {
223
218
  expect(apps.length).toBe(1);
224
219
  expect(apps[0]!.service.length).toBe(1);
225
220
 
226
- // Check the service's labels and annotations
221
+ // Check the service's labels
227
222
  const service = apps[0]!.service[0]!;
228
223
 
229
224
  // Verify labels
230
225
  expect(service.labels).toBeDefined();
231
226
  expect(service.labels!['environment']).toBe('production');
232
227
  expect(service.labels!['team']).toBe('platform');
233
-
234
- // Verify annotations
235
- expect(service.annotations).toBeDefined();
236
- expect(service.annotations!['description']).toBe('Service for handling API requests');
237
- expect(service.annotations!['version']).toBe('1.0.0');
238
228
  });
239
229
 
240
- test('service with non-string labels and annotations', () => {
230
+ test('service with non-string labels', () => {
241
231
  const CONFIG = `
242
232
  application "my-app" {
243
233
  service "my-service" {
@@ -246,11 +236,6 @@ application "my-app" {
246
236
  priority = 1
247
237
  isActive = true
248
238
  }
249
-
250
- annotations = {
251
- description = "Service for handling API requests"
252
- maxInstances = 5
253
- }
254
239
  }
255
240
  }
256
241
  `;
@@ -262,13 +247,12 @@ application "my-app" {
262
247
  const [_, errors] = buildManifest(ast);
263
248
 
264
249
  // Should have errors for non-string values
265
- expect(errors.length).toBe(3);
250
+ expect(errors.length).toBe(2);
266
251
 
267
252
  // Check error messages
268
253
  const errorMessages = errors.map((err) => err.message);
269
254
  expect(errorMessages).toContain('labels must have string values, found non-string value for key "priority"');
270
255
  expect(errorMessages).toContain('labels must have string values, found non-string value for key "isActive"');
271
- expect(errorMessages).toContain('annotations must have string values, found non-string value for key "maxInstances"');
272
256
  });
273
257
 
274
258
  test('service with invalid labels type', () => {
@@ -291,7 +275,7 @@ application "my-app" {
291
275
  expect(errors[0]!.message).toBe('labels must be an object');
292
276
  });
293
277
 
294
- test('actor with labels and annotations', () => {
278
+ test('actor with labels', () => {
295
279
  const CONFIG = `
296
280
  application "my-app" {
297
281
  actor "my-actor" {
@@ -300,11 +284,6 @@ application "my-app" {
300
284
  team = "platform"
301
285
  }
302
286
 
303
- annotations = {
304
- description = "Actor for processing background jobs"
305
- version = "1.0.0"
306
- }
307
-
308
287
  visibility = "protected"
309
288
  }
310
289
  }
@@ -321,7 +300,7 @@ application "my-app" {
321
300
  expect(apps.length).toBe(1);
322
301
  expect(apps[0]!.actor.length).toBe(1);
323
302
 
324
- // Check the actor's labels and annotations
303
+ // Check the actor's labels
325
304
  const actor = apps[0]!.actor[0]!;
326
305
 
327
306
  // Verify labels
@@ -329,16 +308,11 @@ application "my-app" {
329
308
  expect(actor.labels!['environment']).toBe('production');
330
309
  expect(actor.labels!['team']).toBe('platform');
331
310
 
332
- // Verify annotations
333
- expect(actor.annotations).toBeDefined();
334
- expect(actor.annotations!['description']).toBe('Actor for processing background jobs');
335
- expect(actor.annotations!['version']).toBe('1.0.0');
336
-
337
311
  // Verify other properties still work
338
312
  expect(valueOf(actor.visibility!)).toBe('protected');
339
313
  });
340
314
 
341
- test('observer with labels and annotations', () => {
315
+ test('observer with labels', () => {
342
316
  const CONFIG = `
343
317
  application "my-app" {
344
318
  bucket "my-bucket" {}
@@ -349,11 +323,6 @@ application "my-app" {
349
323
  team = "platform"
350
324
  }
351
325
 
352
- annotations = {
353
- description = "Observer for monitoring bucket changes"
354
- version = "1.0.0"
355
- }
356
-
357
326
  source {
358
327
  bucket = "my-bucket"
359
328
  }
@@ -372,7 +341,7 @@ application "my-app" {
372
341
  expect(apps.length).toBe(1);
373
342
  expect(apps[0]!.observer.length).toBe(1);
374
343
 
375
- // Check the observer's labels and annotations
344
+ // Check the observer's labels
376
345
  const observer = apps[0]!.observer[0]!;
377
346
 
378
347
  // Verify labels
@@ -380,11 +349,6 @@ application "my-app" {
380
349
  expect(observer.labels!['environment']).toBe('production');
381
350
  expect(observer.labels!['team']).toBe('platform');
382
351
 
383
- // Verify annotations
384
- expect(observer.annotations).toBeDefined();
385
- expect(observer.annotations!['description']).toBe('Observer for monitoring bucket changes');
386
- expect(observer.annotations!['version']).toBe('1.0.0');
387
-
388
352
  // Verify source still works
389
353
  expect(observer.source.length).toBe(1);
390
354
  expect(valueOf(observer.source[0]!.bucket!)).toBe('my-bucket');
@@ -34,6 +34,12 @@ export interface ConfigObject {
34
34
  start: number;
35
35
  end: number;
36
36
  }
37
+ export const EMPTY_CONFIG_OBJECT: ConfigObject = {
38
+ line: 0,
39
+ column: 0,
40
+ start: 0,
41
+ end: 0,
42
+ } as const;
37
43
 
38
44
  export class ConfigError {
39
45
  message: string;
@@ -222,9 +228,6 @@ export function buildApplication(node: StanzaNode): [Application | undefined, Co
222
228
  case 'labels':
223
229
  buildLabelset(app, 'labels', child, errors);
224
230
  break;
225
- case 'annotations':
226
- buildLabelset(app, 'annotations', child, errors);
227
- break;
228
231
  default:
229
232
  errors.push({ message: 'unexpected assignment', ...child });
230
233
  }
@@ -275,9 +278,6 @@ function buildService(stanza: StanzaNode): [Service, ConfigError[]] {
275
278
  case 'labels':
276
279
  buildLabelset(service, 'labels', child, errors);
277
280
  break;
278
- case 'annotations':
279
- buildLabelset(service, 'annotations', child, errors);
280
- break;
281
281
  default:
282
282
  errors.push({ message: 'unexpected assignment', ...child });
283
283
  }
@@ -502,9 +502,6 @@ function buildObserver(stanza: StanzaNode): [Observer, ConfigError[]] {
502
502
  case 'labels':
503
503
  buildLabelset(observer, 'labels', child, errors);
504
504
  break;
505
- case 'annotations':
506
- buildLabelset(observer, 'annotations', child, errors);
507
- break;
508
505
  default:
509
506
  errors.push({ message: 'unexpected assignment', ...child });
510
507
  }
@@ -548,9 +545,6 @@ function buildActor(stanza: StanzaNode): [Actor, ConfigError[]] {
548
545
  case 'labels':
549
546
  buildLabelset(actor, 'labels', child, errors);
550
547
  break;
551
- case 'annotations':
552
- buildLabelset(actor, 'annotations', child, errors);
553
- break;
554
548
  default:
555
549
  errors.push({ message: 'unexpected assignment', ...child });
556
550
  }
@@ -785,7 +779,6 @@ export class Application {
785
779
  kvStore: KvStore[] = [];
786
780
  smartBucket: SmartBucket[] = [];
787
781
  labels: Record<string, string> = {};
788
- annotations: Record<string, string> = {};
789
782
 
790
783
  constructor(name: TokenString, obj: ConfigObject) {
791
784
  this.name = name;
@@ -807,7 +800,6 @@ export class Service {
807
800
  bindings: Binding[] = [];
808
801
  env: Env[] = [];
809
802
  labels: Record<string, string> = {};
810
- annotations: Record<string, string> = {};
811
803
 
812
804
  constructor(name: TokenString, obj: ConfigObject) {
813
805
  this.name = name;
@@ -822,7 +814,6 @@ export class Actor {
822
814
  env: Env[] = [];
823
815
  visibility?: TokenString;
824
816
  labels: Record<string, string> = {};
825
- annotations: Record<string, string> = {};
826
817
 
827
818
  constructor(name: TokenString, obj: ConfigObject) {
828
819
  this.name = name;
@@ -852,7 +843,6 @@ export class Observer {
852
843
  bindings: Binding[] = [];
853
844
  env: Env[] = [];
854
845
  labels: Record<string, string> = {};
855
- annotations: Record<string, string> = {};
856
846
 
857
847
  constructor(name: TokenString, obj: ConfigObject) {
858
848
  this.name = name;
@@ -310,7 +310,8 @@ const observerSourceValidator: Validator = {
310
310
  }
311
311
  if (
312
312
  source.bucket !== undefined &&
313
- !app.bucket.some((b) => valueOf(b.name) === (source.bucket && valueOf(source.bucket)))
313
+ !app.bucket.some((b) => valueOf(b.name) === (source.bucket && valueOf(source.bucket))) &&
314
+ !app.smartBucket.some((b) => valueOf(b.name) === (source.bucket && valueOf(source.bucket)))
314
315
  ) {
315
316
  errors.push({
316
317
  message: `bucket ${source.bucket.value} not found`,
@@ -0,0 +1,299 @@
1
+ // @generated by protoc-gen-es v2.2.5 with parameter "target=ts,import_extension=.js"
2
+ // @generated from file liquidmetal/v1alpha1/annotation.proto (package liquidmetal.v1alpha1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
6
+ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1";
7
+ import type { Message } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * Describes the file liquidmetal/v1alpha1/annotation.proto.
11
+ */
12
+ export const file_liquidmetal_v1alpha1_annotation: GenFile = /*@__PURE__*/
13
+ fileDesc("CiVsaXF1aWRtZXRhbC92MWFscGhhMS9hbm5vdGF0aW9uLnByb3RvEhRsaXF1aWRtZXRhbC52MWFscGhhMSKOAQoUUHV0QW5ub3RhdGlvblJlcXVlc3QSFwoPb3JnYW5pemF0aW9uX2lkGAEgASgJEg8KB3VzZXJfaWQYAiABKAkSOAoHbG9jYXRvchgDIAEoCzInLmxpcXVpZG1ldGFsLnYxYWxwaGExLkFubm90YXRpb25Mb2NhdG9yEhIKCmFubm90YXRpb24YBCABKAkiUQoVUHV0QW5ub3RhdGlvblJlc3BvbnNlEjgKB2xvY2F0b3IYASABKAsyJy5saXF1aWRtZXRhbC52MWFscGhhMS5Bbm5vdGF0aW9uTG9jYXRvciJ6ChRHZXRBbm5vdGF0aW9uUmVxdWVzdBIXCg9vcmdhbml6YXRpb25faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRI4Cgdsb2NhdG9yGAMgASgLMicubGlxdWlkbWV0YWwudjFhbHBoYTEuQW5ub3RhdGlvbkxvY2F0b3IiVQoVR2V0QW5ub3RhdGlvblJlc3BvbnNlEjwKCmFubm90YXRpb24YASABKAsyKC5saXF1aWRtZXRhbC52MWFscGhhMS5Bbm5vdGF0aW9uUmVzcG9uc2UifAoWTGlzdEFubm90YXRpb25zUmVxdWVzdBIXCg9vcmdhbml6YXRpb25faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRI4Cgdsb2NhdG9yGAMgASgLMicubGlxdWlkbWV0YWwudjFhbHBoYTEuQW5ub3RhdGlvbkxvY2F0b3IiVgoXTGlzdEFubm90YXRpb25zUmVzcG9uc2USOwoKYW5ub3RhdGlvbhgBIAMoCzInLmxpcXVpZG1ldGFsLnYxYWxwaGExLkFubm90YXRpb25Mb2NhdG9yItEBChFBbm5vdGF0aW9uTG9jYXRvchIYChBhcHBsaWNhdGlvbl9uYW1lGAEgASgJEh4KFmFwcGxpY2F0aW9uX3ZlcnNpb25faWQYAiABKAkSGAoLbW9kdWxlX25hbWUYAyABKAlIAIgBARIRCgRpdGVtGAQgASgJSAGIAQESEAoDa2V5GAUgASgJSAKIAQESFQoIcmV2aXNpb24YBiABKAlIA4gBAUIOCgxfbW9kdWxlX25hbWVCBwoFX2l0ZW1CBgoEX2tleUILCglfcmV2aXNpb24iYwoSQW5ub3RhdGlvblJlc3BvbnNlEhIKCmFubm90YXRpb24YASABKAkSOQoIbG9jYXRpb24YAiABKAsyJy5saXF1aWRtZXRhbC52MWFscGhhMS5Bbm5vdGF0aW9uTG9jYXRvcjLXAgoRQW5ub3RhdGlvblNlcnZpY2USaAoNUHV0QW5ub3RhdGlvbhIqLmxpcXVpZG1ldGFsLnYxYWxwaGExLlB1dEFubm90YXRpb25SZXF1ZXN0GisubGlxdWlkbWV0YWwudjFhbHBoYTEuUHV0QW5ub3RhdGlvblJlc3BvbnNlEmgKDUdldEFubm90YXRpb24SKi5saXF1aWRtZXRhbC52MWFscGhhMS5HZXRBbm5vdGF0aW9uUmVxdWVzdBorLmxpcXVpZG1ldGFsLnYxYWxwaGExLkdldEFubm90YXRpb25SZXNwb25zZRJuCg9MaXN0QW5ub3RhdGlvbnMSLC5saXF1aWRtZXRhbC52MWFscGhhMS5MaXN0QW5ub3RhdGlvbnNSZXF1ZXN0Gi0ubGlxdWlkbWV0YWwudjFhbHBoYTEuTGlzdEFubm90YXRpb25zUmVzcG9uc2VC6gEKGGNvbS5saXF1aWRtZXRhbC52MWFscGhhMUIPQW5ub3RhdGlvblByb3RvUAFaTGdpdGh1Yi5jb20vbGlxdWlkbWV0YWwtYWkvcHJvdG9nZW4yL2xpcXVpZG1ldGFsL3YxYWxwaGExO2xpcXVpZG1ldGFsdjFhbHBoYTGiAgNMWFiqAhRMaXF1aWRtZXRhbC5WMWFscGhhMcoCFExpcXVpZG1ldGFsXFYxYWxwaGEx4gIgTGlxdWlkbWV0YWxcVjFhbHBoYTFcR1BCTWV0YWRhdGHqAhVMaXF1aWRtZXRhbDo6VjFhbHBoYTFiBnByb3RvMw");
14
+
15
+ /**
16
+ * @generated from message liquidmetal.v1alpha1.PutAnnotationRequest
17
+ */
18
+ export type PutAnnotationRequest = Message<"liquidmetal.v1alpha1.PutAnnotationRequest"> & {
19
+ /**
20
+ * @generated from field: string organization_id = 1;
21
+ */
22
+ organizationId: string;
23
+
24
+ /**
25
+ * @generated from field: string user_id = 2;
26
+ */
27
+ userId: string;
28
+
29
+ /**
30
+ * Locator for the object to annotate
31
+ *
32
+ * @generated from field: liquidmetal.v1alpha1.AnnotationLocator locator = 3;
33
+ */
34
+ locator?: AnnotationLocator;
35
+
36
+ /**
37
+ * Annotation data in structured format
38
+ *
39
+ * @generated from field: string annotation = 4;
40
+ */
41
+ annotation: string;
42
+ };
43
+
44
+ /**
45
+ * Describes the message liquidmetal.v1alpha1.PutAnnotationRequest.
46
+ * Use `create(PutAnnotationRequestSchema)` to create a new message.
47
+ */
48
+ export const PutAnnotationRequestSchema: GenMessage<PutAnnotationRequest> = /*@__PURE__*/
49
+ messageDesc(file_liquidmetal_v1alpha1_annotation, 0);
50
+
51
+ /**
52
+ * @generated from message liquidmetal.v1alpha1.PutAnnotationResponse
53
+ */
54
+ export type PutAnnotationResponse = Message<"liquidmetal.v1alpha1.PutAnnotationResponse"> & {
55
+ /**
56
+ * Locator for the annotated object
57
+ *
58
+ * @generated from field: liquidmetal.v1alpha1.AnnotationLocator locator = 1;
59
+ */
60
+ locator?: AnnotationLocator;
61
+ };
62
+
63
+ /**
64
+ * Describes the message liquidmetal.v1alpha1.PutAnnotationResponse.
65
+ * Use `create(PutAnnotationResponseSchema)` to create a new message.
66
+ */
67
+ export const PutAnnotationResponseSchema: GenMessage<PutAnnotationResponse> = /*@__PURE__*/
68
+ messageDesc(file_liquidmetal_v1alpha1_annotation, 1);
69
+
70
+ /**
71
+ * @generated from message liquidmetal.v1alpha1.GetAnnotationRequest
72
+ */
73
+ export type GetAnnotationRequest = Message<"liquidmetal.v1alpha1.GetAnnotationRequest"> & {
74
+ /**
75
+ * Organization ID for the request
76
+ *
77
+ * @generated from field: string organization_id = 1;
78
+ */
79
+ organizationId: string;
80
+
81
+ /**
82
+ * User ID for the request
83
+ *
84
+ * @generated from field: string user_id = 2;
85
+ */
86
+ userId: string;
87
+
88
+ /**
89
+ * Locator for the object to annotate
90
+ *
91
+ * @generated from field: liquidmetal.v1alpha1.AnnotationLocator locator = 3;
92
+ */
93
+ locator?: AnnotationLocator;
94
+ };
95
+
96
+ /**
97
+ * Describes the message liquidmetal.v1alpha1.GetAnnotationRequest.
98
+ * Use `create(GetAnnotationRequestSchema)` to create a new message.
99
+ */
100
+ export const GetAnnotationRequestSchema: GenMessage<GetAnnotationRequest> = /*@__PURE__*/
101
+ messageDesc(file_liquidmetal_v1alpha1_annotation, 2);
102
+
103
+ /**
104
+ * @generated from message liquidmetal.v1alpha1.GetAnnotationResponse
105
+ */
106
+ export type GetAnnotationResponse = Message<"liquidmetal.v1alpha1.GetAnnotationResponse"> & {
107
+ /**
108
+ * The annotation data for the object
109
+ *
110
+ * @generated from field: liquidmetal.v1alpha1.AnnotationResponse annotation = 1;
111
+ */
112
+ annotation?: AnnotationResponse;
113
+ };
114
+
115
+ /**
116
+ * Describes the message liquidmetal.v1alpha1.GetAnnotationResponse.
117
+ * Use `create(GetAnnotationResponseSchema)` to create a new message.
118
+ */
119
+ export const GetAnnotationResponseSchema: GenMessage<GetAnnotationResponse> = /*@__PURE__*/
120
+ messageDesc(file_liquidmetal_v1alpha1_annotation, 3);
121
+
122
+ /**
123
+ * @generated from message liquidmetal.v1alpha1.ListAnnotationsRequest
124
+ */
125
+ export type ListAnnotationsRequest = Message<"liquidmetal.v1alpha1.ListAnnotationsRequest"> & {
126
+ /**
127
+ * @generated from field: string organization_id = 1;
128
+ */
129
+ organizationId: string;
130
+
131
+ /**
132
+ * @generated from field: string user_id = 2;
133
+ */
134
+ userId: string;
135
+
136
+ /**
137
+ * Locator for the object to annotate
138
+ *
139
+ * @generated from field: liquidmetal.v1alpha1.AnnotationLocator locator = 3;
140
+ */
141
+ locator?: AnnotationLocator;
142
+ };
143
+
144
+ /**
145
+ * Describes the message liquidmetal.v1alpha1.ListAnnotationsRequest.
146
+ * Use `create(ListAnnotationsRequestSchema)` to create a new message.
147
+ */
148
+ export const ListAnnotationsRequestSchema: GenMessage<ListAnnotationsRequest> = /*@__PURE__*/
149
+ messageDesc(file_liquidmetal_v1alpha1_annotation, 4);
150
+
151
+ /**
152
+ * @generated from message liquidmetal.v1alpha1.ListAnnotationsResponse
153
+ */
154
+ export type ListAnnotationsResponse = Message<"liquidmetal.v1alpha1.ListAnnotationsResponse"> & {
155
+ /**
156
+ * List of annotations for the object
157
+ *
158
+ * @generated from field: repeated liquidmetal.v1alpha1.AnnotationLocator annotation = 1;
159
+ */
160
+ annotation: AnnotationLocator[];
161
+ };
162
+
163
+ /**
164
+ * Describes the message liquidmetal.v1alpha1.ListAnnotationsResponse.
165
+ * Use `create(ListAnnotationsResponseSchema)` to create a new message.
166
+ */
167
+ export const ListAnnotationsResponseSchema: GenMessage<ListAnnotationsResponse> = /*@__PURE__*/
168
+ messageDesc(file_liquidmetal_v1alpha1_annotation, 5);
169
+
170
+ /**
171
+ * AnnotationLocator is used to locate an annotation within the context of an application and service
172
+ * It includes optional fields to specify the application, service, item, version, key, and revision
173
+ * __EXAMPLE__ "my-app"
174
+ * __REQUIRED__ TRUE
175
+ *
176
+ * @generated from message liquidmetal.v1alpha1.AnnotationLocator
177
+ */
178
+ export type AnnotationLocator = Message<"liquidmetal.v1alpha1.AnnotationLocator"> & {
179
+ /**
180
+ * Name of the application
181
+ *
182
+ * @generated from field: string application_name = 1;
183
+ */
184
+ applicationName: string;
185
+
186
+ /**
187
+ * version of the application (NOTE: CURRENT is magical value for the current version)
188
+ *
189
+ * @generated from field: string application_version_id = 2;
190
+ */
191
+ applicationVersionId: string;
192
+
193
+ /**
194
+ * Name of the service or module
195
+ *
196
+ * @generated from field: optional string module_name = 3;
197
+ */
198
+ moduleName?: string;
199
+
200
+ /**
201
+ * Optional item to annotate, e.g., an item in a bucket
202
+ *
203
+ * @generated from field: optional string item = 4;
204
+ */
205
+ item?: string;
206
+
207
+ /**
208
+ * Optional key for the annotation (returns a single annotation)
209
+ *
210
+ * @generated from field: optional string key = 5;
211
+ */
212
+ key?: string;
213
+
214
+ /**
215
+ * Optional revision of the annotation
216
+ *
217
+ * @generated from field: optional string revision = 6;
218
+ */
219
+ revision?: string;
220
+ };
221
+
222
+ /**
223
+ * Describes the message liquidmetal.v1alpha1.AnnotationLocator.
224
+ * Use `create(AnnotationLocatorSchema)` to create a new message.
225
+ */
226
+ export const AnnotationLocatorSchema: GenMessage<AnnotationLocator> = /*@__PURE__*/
227
+ messageDesc(file_liquidmetal_v1alpha1_annotation, 6);
228
+
229
+ /**
230
+ * @generated from message liquidmetal.v1alpha1.AnnotationResponse
231
+ */
232
+ export type AnnotationResponse = Message<"liquidmetal.v1alpha1.AnnotationResponse"> & {
233
+ /**
234
+ * The annotation data
235
+ *
236
+ * @generated from field: string annotation = 1;
237
+ */
238
+ annotation: string;
239
+
240
+ /**
241
+ * Locator for the annotation
242
+ *
243
+ * @generated from field: liquidmetal.v1alpha1.AnnotationLocator location = 2;
244
+ */
245
+ location?: AnnotationLocator;
246
+ };
247
+
248
+ /**
249
+ * Describes the message liquidmetal.v1alpha1.AnnotationResponse.
250
+ * Use `create(AnnotationResponseSchema)` to create a new message.
251
+ */
252
+ export const AnnotationResponseSchema: GenMessage<AnnotationResponse> = /*@__PURE__*/
253
+ messageDesc(file_liquidmetal_v1alpha1_annotation, 7);
254
+
255
+ /**
256
+ * AnnotationService provides internal API access to annotate and apply metadata all aspects of a raindrop application, from the overall application to individual objects/items
257
+ *
258
+ * @generated from service liquidmetal.v1alpha1.AnnotationService
259
+ */
260
+ export const AnnotationService: GenService<{
261
+ /**
262
+ * Annotation adds an annotation to an object in a bucket
263
+ *
264
+ * @generated from rpc liquidmetal.v1alpha1.AnnotationService.PutAnnotation
265
+ */
266
+ putAnnotation: {
267
+ methodKind: "unary";
268
+ input: typeof PutAnnotationRequestSchema;
269
+ output: typeof PutAnnotationResponseSchema;
270
+ },
271
+ /**
272
+ * GetAnnotation retrieves a specific annotation for an object
273
+ * It uses the AnnotationLocator to specify the object and the key of the annotation
274
+ * __EXAMPLE__ "my-app", "my-service", "my-item", "my-key"
275
+ * __REQUIRED__ TRUE
276
+ * __REQUIRED__ FALSE
277
+ * __REQUIRED__ FALSE
278
+ * __REQUIRED__ FALSE
279
+ *
280
+ * @generated from rpc liquidmetal.v1alpha1.AnnotationService.GetAnnotation
281
+ */
282
+ getAnnotation: {
283
+ methodKind: "unary";
284
+ input: typeof GetAnnotationRequestSchema;
285
+ output: typeof GetAnnotationResponseSchema;
286
+ },
287
+ /**
288
+ * ListAnnotations lists all annotations for a given object
289
+ *
290
+ * @generated from rpc liquidmetal.v1alpha1.AnnotationService.ListAnnotations
291
+ */
292
+ listAnnotations: {
293
+ methodKind: "unary";
294
+ input: typeof ListAnnotationsRequestSchema;
295
+ output: typeof ListAnnotationsResponseSchema;
296
+ },
297
+ }> = /*@__PURE__*/
298
+ serviceDesc(file_liquidmetal_v1alpha1_annotation, 0);
299
+