@liquidmetal-ai/raindrop 0.4.10 → 0.4.12

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 (52) hide show
  1. package/README.md +203 -51
  2. package/dist/base-command.d.ts +6 -0
  3. package/dist/base-command.d.ts.map +1 -1
  4. package/dist/base-command.js +16 -1
  5. package/dist/codegen.js +3 -3
  6. package/dist/codegen.test.js +6 -6
  7. package/dist/commands/bucket/create-credential.d.ts +25 -0
  8. package/dist/commands/bucket/create-credential.d.ts.map +1 -0
  9. package/dist/commands/bucket/create-credential.js +171 -0
  10. package/dist/commands/bucket/delete-credential.d.ts +24 -0
  11. package/dist/commands/bucket/delete-credential.d.ts.map +1 -0
  12. package/dist/commands/bucket/delete-credential.js +140 -0
  13. package/dist/commands/bucket/get-credential.d.ts +24 -0
  14. package/dist/commands/bucket/get-credential.d.ts.map +1 -0
  15. package/dist/commands/bucket/get-credential.js +149 -0
  16. package/dist/commands/bucket/list-credentials.d.ts +23 -0
  17. package/dist/commands/bucket/list-credentials.d.ts.map +1 -0
  18. package/dist/commands/bucket/list-credentials.js +146 -0
  19. package/dist/commands/build/branch.d.ts +1 -0
  20. package/dist/commands/build/branch.d.ts.map +1 -1
  21. package/dist/commands/build/branch.js +17 -0
  22. package/dist/commands/build/deploy.d.ts +1 -0
  23. package/dist/commands/build/deploy.d.ts.map +1 -1
  24. package/dist/commands/build/deploy.js +17 -0
  25. package/dist/commands/build/find.d.ts +2 -0
  26. package/dist/commands/build/find.d.ts.map +1 -1
  27. package/dist/commands/build/find.js +143 -16
  28. package/dist/commands/build/list.d.ts +6 -0
  29. package/dist/commands/build/list.d.ts.map +1 -1
  30. package/dist/commands/build/list.js +280 -99
  31. package/dist/commands/build/status.d.ts +0 -4
  32. package/dist/commands/build/status.d.ts.map +1 -1
  33. package/dist/commands/build/status.js +30 -80
  34. package/dist/commands/object/delete.d.ts.map +1 -1
  35. package/dist/commands/object/delete.js +10 -8
  36. package/dist/commands/object/get.d.ts.map +1 -1
  37. package/dist/commands/object/get.js +9 -8
  38. package/dist/commands/object/list.d.ts.map +1 -1
  39. package/dist/commands/object/list.js +8 -6
  40. package/dist/commands/object/put.d.ts.map +1 -1
  41. package/dist/commands/object/put.js +12 -10
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +4 -0
  45. package/dist/status.d.ts +21 -0
  46. package/dist/status.d.ts.map +1 -0
  47. package/dist/status.js +137 -0
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/oclif.manifest.json +2219 -1204
  50. package/package.json +4 -3
  51. package/templates/db/node_modules/.bin/tsc +17 -0
  52. package/templates/db/node_modules/.bin/tsserver +17 -0
@@ -1,7 +1,7 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import { BaseCommand } from '../../base-command.js';
3
1
  import { toJsonString } from '@bufbuild/protobuf';
4
2
  import { DeleteObjectResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/object_pb';
3
+ import { Args, Flags } from '@oclif/core';
4
+ import { BaseCommand } from '../../base-command.js';
5
5
  export default class ObjectDelete extends BaseCommand {
6
6
  static args = {
7
7
  key: Args.string({
@@ -54,13 +54,16 @@ Delete file with key 'my-key' from my-bucket
54
54
  if (!this.flags.bucket && !this.flags.moduleId) {
55
55
  this.error('Either --bucket or --moduleId flag must be specified.');
56
56
  }
57
+ if (this.flags.bucket && !this.flags.bucket.includes('#')) {
58
+ await this.loadConfig();
59
+ }
57
60
  const bucketLocation = this.flags.bucket
58
61
  ? {
59
62
  bucketLocation: {
60
63
  case: 'bucket',
61
64
  value: {
62
- name: this.flags.bucket,
63
- version: '',
65
+ name: this.flags.bucket.split('#')[0],
66
+ version: this.flags.bucket.includes('#') ? this.flags.bucket.split('#')[1] : this.raindropConfig?.versionId,
64
67
  },
65
68
  },
66
69
  }
@@ -70,20 +73,19 @@ Delete file with key 'my-key' from my-bucket
70
73
  value: this.flags.moduleId,
71
74
  },
72
75
  };
73
- const { args, flags } = await this.parse(ObjectDelete);
74
76
  const { client: objectService, userId, organizationId } = await this.objectService();
75
77
  const response = await objectService.deleteObject({
76
78
  userId,
77
79
  organizationId,
78
80
  bucketLocation,
79
- key: args.key,
81
+ key: this.args.key,
80
82
  });
81
- if (flags.output === 'json') {
83
+ if (this.flags.output === 'json') {
82
84
  console.log(toJsonString(DeleteObjectResponseSchema, response, { prettySpaces: 2 }));
83
85
  }
84
86
  else {
85
87
  console.log('Successfully deleted file:');
86
- console.log(`Key: ${args.key}`);
88
+ console.log(`Key: ${this.args.key}`);
87
89
  }
88
90
  }
89
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/object/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;;;;MAST;IAEF,MAAM,CAAC,WAAW,SAA6C;IAE/D,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;MA+BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuE3B"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/object/get.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;;;;MAST;IAEF,MAAM,CAAC,WAAW,SAA6C;IAE/D,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;MA+BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuE3B"}
@@ -1,7 +1,7 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { BaseCommand } from '../../base-command.js';
3
2
  import * as fs from 'node:fs/promises';
4
3
  import * as path from 'path';
4
+ import { BaseCommand } from '../../base-command.js';
5
5
  export default class ObjectGet extends BaseCommand {
6
6
  static args = {
7
7
  key: Args.string({
@@ -61,15 +61,17 @@ Download file with key 'my-key' from my-bucket to output.txt
61
61
  if (!this.flags.bucket && !this.flags.moduleId) {
62
62
  this.error('Either --bucket or --moduleId flag must be specified.');
63
63
  }
64
- const { args, flags } = await this.parse(ObjectGet);
64
+ if (this.flags.bucket && !this.flags.bucket.includes('#')) {
65
+ await this.loadConfig();
66
+ }
65
67
  // set the bucketLocation based on whether a bucket name or moduleId is provided
66
68
  const bucketLocation = this.flags.bucket
67
69
  ? {
68
70
  bucketLocation: {
69
71
  case: 'bucket',
70
72
  value: {
71
- name: this.flags.bucket,
72
- version: '',
73
+ name: this.flags.bucket.split('#')[0],
74
+ version: this.flags.bucket.includes('#') ? this.flags.bucket.split('#')[1] : this.raindropConfig?.versionId,
73
75
  },
74
76
  },
75
77
  }
@@ -83,14 +85,13 @@ Download file with key 'my-key' from my-bucket to output.txt
83
85
  const response = await objectService.getObject({
84
86
  userId,
85
87
  organizationId,
86
- key: args.key,
88
+ key: this.args.key,
87
89
  bucketLocation,
88
90
  });
89
91
  if (!response.content) {
90
92
  this.error('No content received from object storage');
91
- return;
92
93
  }
93
- switch (flags.format) {
94
+ switch (this.flags.format) {
94
95
  case 'json':
95
96
  console.log(JSON.stringify({
96
97
  content: response.content.toString(),
@@ -102,7 +103,7 @@ Download file with key 'my-key' from my-bucket to output.txt
102
103
  break;
103
104
  case 'file':
104
105
  case 'text': {
105
- const outputPath = args.output || path.basename(args.key);
106
+ const outputPath = this.args.output || path.basename(this.args.key);
106
107
  await fs.writeFile(outputPath, response.content);
107
108
  console.log('Successfully downloaded file:');
108
109
  console.log(`Saved to: ${outputPath}`);
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/object/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW,CAAC,OAAO,UAAU,CAAC;IACpE,MAAM,CAAC,WAAW,SAA8B;IAEhD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;MA+BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuE3B"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/object/list.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW,CAAC,OAAO,UAAU,CAAC;IACpE,MAAM,CAAC,WAAW,SAA8B;IAEhD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;MA+BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyE3B"}
@@ -1,8 +1,8 @@
1
- import { Flags } from '@oclif/core';
2
- import { BaseCommand } from '../../base-command.js';
3
1
  import { toJsonString } from '@bufbuild/protobuf';
4
2
  import { timestampDate } from '@bufbuild/protobuf/wkt';
5
3
  import { ListObjectsResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/object_pb';
4
+ import { Flags } from '@oclif/core';
5
+ import { BaseCommand } from '../../base-command.js';
6
6
  export default class ObjectList extends BaseCommand {
7
7
  static description = 'List objects in a bucket';
8
8
  static examples = [
@@ -49,15 +49,17 @@ List all objects in my-bucket
49
49
  if (!this.flags.bucket && !this.flags.moduleId) {
50
50
  this.error('Either --bucket or --moduleId flag must be specified.');
51
51
  }
52
- const { flags } = await this.parse(ObjectList);
52
+ if (this.flags.bucket && !this.flags.bucket.includes('#')) {
53
+ await this.loadConfig();
54
+ }
53
55
  const { client: objectService, userId, organizationId } = await this.objectService();
54
56
  const bucketLocation = this.flags.bucket
55
57
  ? {
56
58
  bucketLocation: {
57
59
  case: 'bucket',
58
60
  value: {
59
- name: this.flags.bucket,
60
- version: '',
61
+ name: this.flags.bucket.split('#')[0],
62
+ version: this.flags.bucket.includes('#') ? this.flags.bucket.split('#')[1] : this.raindropConfig?.versionId,
61
63
  },
62
64
  },
63
65
  }
@@ -84,7 +86,7 @@ List all objects in my-bucket
84
86
  console.log('No objects found in bucket');
85
87
  return;
86
88
  }
87
- switch (flags.output) {
89
+ switch (this.flags.output) {
88
90
  case 'json':
89
91
  console.log(toJsonString(ListObjectsResponseSchema, response, { prettySpaces: 2 }));
90
92
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/commands/object/put.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;;;;MAUT;IAEF,MAAM,CAAC,WAAW,SAAyC;IAE3D,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAoCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD1B,OAAO,CAAC,cAAc;CAavB"}
1
+ {"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/commands/object/put.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;;;;MAUT;IAEF,MAAM,CAAC,WAAW,SAAyC;IAE3D,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAoCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD1B,OAAO,CAAC,cAAc;CAavB"}
@@ -1,9 +1,9 @@
1
+ import { toJsonString } from '@bufbuild/protobuf';
2
+ import { PutObjectResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/object_pb';
1
3
  import { Args, Flags } from '@oclif/core';
2
- import { BaseCommand } from '../../base-command.js';
3
4
  import * as fs from 'node:fs/promises';
4
5
  import * as path from 'path';
5
- import { toJsonString } from '@bufbuild/protobuf';
6
- import { PutObjectResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/object_pb';
6
+ import { BaseCommand } from '../../base-command.js';
7
7
  export default class ObjectPut extends BaseCommand {
8
8
  static args = {
9
9
  file: Args.file({
@@ -66,13 +66,16 @@ Upload myfile.txt to my-bucket with key 'my-key'
66
66
  if (!this.flags.bucket && !this.flags.moduleId) {
67
67
  this.error('Either --bucket or --moduleId flag must be specified.');
68
68
  }
69
+ if (this.flags.bucket && !this.flags.bucket.includes('#')) {
70
+ await this.loadConfig();
71
+ }
69
72
  const bucketLocation = this.flags.bucket
70
73
  ? {
71
74
  bucketLocation: {
72
75
  case: 'bucket',
73
76
  value: {
74
- name: this.flags.bucket,
75
- version: '',
77
+ name: this.flags.bucket.split('#')[0],
78
+ version: this.flags.bucket.includes('#') ? this.flags.bucket.split('#')[1] : this.raindropConfig?.versionId,
76
79
  },
77
80
  },
78
81
  }
@@ -82,21 +85,20 @@ Upload myfile.txt to my-bucket with key 'my-key'
82
85
  value: this.flags.moduleId,
83
86
  },
84
87
  };
85
- const { args, flags } = await this.parse(ObjectPut);
86
88
  const { client: objectService, userId, organizationId } = await this.objectService();
87
89
  // Read the file
88
- const fileContent = await fs.readFile(args.file);
90
+ const fileContent = await fs.readFile(this.args.file);
89
91
  // Get content type if not specified
90
- const contentType = flags.contentType || this.getContentType(args.file);
92
+ const contentType = this.flags.contentType || this.getContentType(this.args.file);
91
93
  const response = await objectService.putObject({
92
94
  userId,
93
95
  organizationId,
94
96
  bucketLocation,
95
- key: args.key,
97
+ key: this.args.key,
96
98
  content: fileContent,
97
99
  contentType,
98
100
  });
99
- if (flags.output === 'json') {
101
+ if (this.flags.output === 'json') {
100
102
  console.log(toJsonString(PutObjectResponseSchema, response, { prettySpaces: 2 }));
101
103
  }
102
104
  else {
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ import { StrictClient } from './strict-client.js';
10
10
  import { AnnotationService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/annotation_pb';
11
11
  import { EventStreamService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/events_pb';
12
12
  import { RiverjackService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/riverjack_pb';
13
+ import { S3CredentialService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/bucket_api_pb';
13
14
  export { run } from '@oclif/core';
14
15
  export declare const EPOCH_TS: import("@bufbuild/protobuf/wkt").Timestamp;
15
16
  export declare function configFromAppFile(appFile: string): Promise<Application[]>;
@@ -41,6 +42,7 @@ export declare function objectService(opts: ServiceClientOptions): Promise<Servi
41
42
  export declare function annotationService(opts: ServiceClientOptions): Promise<ServiceClient<typeof AnnotationService>>;
42
43
  export declare function eventStreamService(opts: ServiceClientOptions): Promise<ServiceClient<typeof EventStreamService>>;
43
44
  export declare function riverjackService(opts: ServiceClientOptions): Promise<ServiceClient<typeof RiverjackService>>;
45
+ export declare function bucketApiService(opts: ServiceClientOptions): Promise<ServiceClient<typeof S3CredentialService>>;
44
46
  export type ServiceClientOptions = {
45
47
  rainbowAuth: StrictClient<typeof RainbowAuthService>;
46
48
  configDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19,6 +19,7 @@ import { traceStore } from './trace.js';
19
19
  import { AnnotationService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/annotation_pb';
20
20
  import { EventStreamService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/events_pb';
21
21
  import { RiverjackService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/riverjack_pb';
22
+ import { S3CredentialService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/bucket_api_pb';
22
23
  export { run } from '@oclif/core';
23
24
  export const EPOCH_TS = timestampFromDate(new Date(0));
24
25
  export async function configFromAppFile(appFile) {
@@ -202,6 +203,9 @@ export async function eventStreamService(opts) {
202
203
  export async function riverjackService(opts) {
203
204
  return serviceClient(RiverjackService, opts);
204
205
  }
206
+ export async function bucketApiService(opts) {
207
+ return serviceClient(S3CredentialService, opts);
208
+ }
205
209
  export async function serviceClient(service, { rainbowAuth, configDir, identity, overrideAuthToken, logger, enableSendVersion }) {
206
210
  const { baseUrl, organizationId, userId } = identity;
207
211
  const { authenticate } = createAuthenticateInterceptor(configDir, rainbowAuth, overrideAuthToken);
@@ -0,0 +1,21 @@
1
+ import { StatusResponse, UnitState } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_pb';
2
+ import { BaseCommand } from './base-command.js';
3
+ export interface StatusOptions<T extends typeof BaseCommand> {
4
+ command: BaseCommand<T>;
5
+ root?: string;
6
+ manifest?: string;
7
+ applicationName?: string;
8
+ versionId?: string;
9
+ output?: 'watch' | 'table' | 'json' | 'compact';
10
+ impersonate?: string;
11
+ }
12
+ export declare const statusString: Record<UnitState, string>;
13
+ export declare function getStatus<T extends typeof BaseCommand>(options: StatusOptions<T>): Promise<StatusResponse>;
14
+ export declare function watchStatus<T extends typeof BaseCommand>(options: StatusOptions<T>): Promise<void>;
15
+ export declare class StatusRenderer {
16
+ private linesLastRendered;
17
+ private getStatusColor;
18
+ renderLive(status: StatusResponse, applicationName: string, versionId?: string): void;
19
+ renderCompact(status: StatusResponse, applicationName: string, versionId?: string): void;
20
+ }
21
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,SAAS,EACV,MAAM,yDAAyD,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,OAAO,WAAW;IAEzD,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAGxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CASzC,CAAC;AAEX,wBAAsB,SAAS,CAAC,CAAC,SAAS,OAAO,WAAW,EAC1D,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,cAAc,CAAC,CAoCzB;AAED,wBAAsB,WAAW,CAAC,CAAC,SAAS,OAAO,WAAW,EAC5D,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO,CAAC,cAAc;IAkBtB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAuCrF,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;CAqBzF"}
package/dist/status.js ADDED
@@ -0,0 +1,137 @@
1
+ import { valueOf } from '@liquidmetal-ai/drizzle/appify/build';
2
+ import { UnitState, } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_pb';
3
+ import chalk from 'chalk';
4
+ import * as readline from 'readline';
5
+ export const statusString = {
6
+ [UnitState.UNSPECIFIED]: '<unknown>',
7
+ [UnitState.PENDING]: 'pending...',
8
+ [UnitState.STARTING]: 'starting...',
9
+ [UnitState.RUNNING]: 'running',
10
+ [UnitState.STOPPING]: 'stopping...',
11
+ [UnitState.STOPPED]: 'stopped',
12
+ [UnitState.DELETING]: 'deleting...',
13
+ [UnitState.DELETED]: 'deleted',
14
+ };
15
+ export async function getStatus(options) {
16
+ const { command, impersonate } = options;
17
+ // Get application name and version
18
+ let applicationName = options.applicationName;
19
+ let versionId = options.versionId;
20
+ if (!versionId) {
21
+ const config = await command.loadConfig();
22
+ versionId = config.versionId;
23
+ }
24
+ if (!applicationName) {
25
+ const apps = await command.loadManifest();
26
+ const app = apps[0];
27
+ if (app === undefined) {
28
+ command.error('No application provided or found in manifest');
29
+ }
30
+ applicationName = valueOf(app.name);
31
+ }
32
+ const { client: catalogService, userId, organizationId: defaultOrganizationId } = await command.catalogService();
33
+ const organizationId = impersonate ?? defaultOrganizationId;
34
+ const status = await catalogService.status({
35
+ userId,
36
+ organizationId,
37
+ applicationName,
38
+ currentVersionId: versionId || '',
39
+ });
40
+ if (status === undefined) {
41
+ command.error(`Application ${applicationName} not found`);
42
+ }
43
+ return status;
44
+ }
45
+ export async function watchStatus(options) {
46
+ const { command } = options;
47
+ const renderer = new StatusRenderer();
48
+ // Get initial application name and version for display
49
+ let applicationName = options.applicationName;
50
+ let versionId = options.versionId;
51
+ if (!applicationName) {
52
+ const apps = await command.loadManifest();
53
+ const app = apps[0];
54
+ if (app) {
55
+ applicationName = valueOf(app.name);
56
+ }
57
+ }
58
+ if (!versionId) {
59
+ const config = await command.loadConfig();
60
+ versionId = config.versionId;
61
+ }
62
+ let status = await getStatus(options);
63
+ while (true) {
64
+ renderer.renderLive(status, applicationName, versionId);
65
+ if (status.state === UnitState.RUNNING || status.state === UnitState.STOPPED) {
66
+ break;
67
+ }
68
+ await new Promise((resolve) => setTimeout(resolve, 1000));
69
+ status = await getStatus(options);
70
+ }
71
+ }
72
+ export class StatusRenderer {
73
+ linesLastRendered = 0;
74
+ getStatusColor(state) {
75
+ switch (state) {
76
+ case UnitState.RUNNING:
77
+ return chalk.green;
78
+ case UnitState.PENDING:
79
+ case UnitState.STARTING:
80
+ return chalk.yellow;
81
+ case UnitState.STOPPING:
82
+ case UnitState.DELETING:
83
+ return chalk.yellow;
84
+ case UnitState.STOPPED:
85
+ case UnitState.DELETED:
86
+ return chalk.red;
87
+ default:
88
+ return chalk.gray;
89
+ }
90
+ }
91
+ renderLive(status, applicationName, versionId) {
92
+ if (this.linesLastRendered > 0) {
93
+ readline.moveCursor(process.stdout, 0, -this.linesLastRendered);
94
+ readline.clearScreenDown(process.stdout);
95
+ }
96
+ const lines = [];
97
+ // Header
98
+ lines.push('');
99
+ lines.push(`${chalk.bold(applicationName)} ${chalk.dim(versionId ? `@${versionId.substring(0, 8)}...` : '')}`);
100
+ lines.push(chalk.dim(`Status: ${this.getStatusColor(status.state)(statusString[status.state])}`));
101
+ lines.push('');
102
+ lines.push(`${chalk.bold('Modules')} ${chalk.dim(`(${status.modules.length})`)}`);
103
+ // Modules
104
+ for (const module of status.modules) {
105
+ const statusColor = this.getStatusColor(module.state);
106
+ const urls = module.urls.length > 0 ? chalk.cyan(module.urls.join(', ')) : chalk.dim('no urls');
107
+ lines.push(` └─ ${chalk.yellow(module.name)} - ${statusColor(statusString[module.state])} - ${urls}`);
108
+ }
109
+ // Summary
110
+ const runningModules = status.modules.filter(m => m.state === UnitState.RUNNING).length;
111
+ const totalModules = status.modules.length;
112
+ lines.push('');
113
+ lines.push(chalk.dim('─'.repeat(50)));
114
+ lines.push(chalk.dim(`Total: ${totalModules} modules (${runningModules} running)`));
115
+ // Print all lines
116
+ for (const line of lines) {
117
+ console.log(line);
118
+ }
119
+ this.linesLastRendered = lines.length;
120
+ }
121
+ renderCompact(status, applicationName, versionId) {
122
+ console.log(`\n${chalk.bold(applicationName)} ${chalk.dim(versionId ? `@${versionId.substring(0, 8)}...` : '')}`);
123
+ console.log(chalk.dim(`Status: ${this.getStatusColor(status.state)(statusString[status.state])}`));
124
+ console.log(`\n${chalk.bold('Modules')} ${chalk.dim(`(${status.modules.length})`)}`);
125
+ for (const module of status.modules) {
126
+ const statusColor = this.getStatusColor(module.state);
127
+ const urls = module.urls.length > 0 ? chalk.cyan(module.urls.join(', ')) : chalk.dim('no urls');
128
+ console.log(` └─ ${chalk.yellow(module.name)} - ${statusColor(statusString[module.state])} - ${urls}`);
129
+ }
130
+ // Add summary
131
+ const runningModules = status.modules.filter(m => m.state === UnitState.RUNNING).length;
132
+ const totalModules = status.modules.length;
133
+ console.log('');
134
+ console.log(chalk.dim('─'.repeat(50)));
135
+ console.log(chalk.dim(`Total: ${totalModules} modules (${runningModules} running)`));
136
+ }
137
+ }
@@ -1 +1 @@
1
- {"root":["../src/base-command.ts","../src/build.test.ts","../src/build.ts","../src/codegen.test.ts","../src/codegen.ts","../src/config.test.ts","../src/config.ts","../src/deploy.ts","../src/index.test.ts","../src/index.ts","../src/strict-client.ts","../src/trace.ts","../src/commands/tail.ts","../src/commands/annotation/get.ts","../src/commands/annotation/list.ts","../src/commands/annotation/put.ts","../src/commands/auth/list.ts","../src/commands/auth/login.ts","../src/commands/auth/logout.ts","../src/commands/auth/select.ts","../src/commands/build/branch.ts","../src/commands/build/checkout.ts","../src/commands/build/clone.ts","../src/commands/build/delete.ts","../src/commands/build/deploy.ts","../src/commands/build/find.ts","../src/commands/build/generate.ts","../src/commands/build/init.ts","../src/commands/build/list.ts","../src/commands/build/sandbox.ts","../src/commands/build/start.ts","../src/commands/build/status.ts","../src/commands/build/stop.ts","../src/commands/build/unsandbox.ts","../src/commands/build/upload.ts","../src/commands/build/validate.ts","../src/commands/build/env/get.ts","../src/commands/build/env/set.ts","../src/commands/build/tools/check.ts","../src/commands/build/tools/fmt.ts","../src/commands/object/delete.ts","../src/commands/object/get.ts","../src/commands/object/list.ts","../src/commands/object/put.ts","../src/commands/query/chunk-search.ts","../src/commands/query/document.ts","../src/commands/query/events.ts","../src/commands/query/search.ts"],"version":"5.8.3"}
1
+ {"root":["../src/base-command.ts","../src/build.test.ts","../src/build.ts","../src/codegen.test.ts","../src/codegen.ts","../src/config.test.ts","../src/config.ts","../src/deploy.ts","../src/index.test.ts","../src/index.ts","../src/status.ts","../src/strict-client.ts","../src/trace.ts","../src/commands/tail.ts","../src/commands/annotation/get.ts","../src/commands/annotation/list.ts","../src/commands/annotation/put.ts","../src/commands/auth/list.ts","../src/commands/auth/login.ts","../src/commands/auth/logout.ts","../src/commands/auth/select.ts","../src/commands/bucket/create-credential.ts","../src/commands/bucket/delete-credential.ts","../src/commands/bucket/get-credential.ts","../src/commands/bucket/list-credentials.ts","../src/commands/build/branch.ts","../src/commands/build/checkout.ts","../src/commands/build/clone.ts","../src/commands/build/delete.ts","../src/commands/build/deploy.ts","../src/commands/build/find.ts","../src/commands/build/generate.ts","../src/commands/build/init.ts","../src/commands/build/list.ts","../src/commands/build/sandbox.ts","../src/commands/build/start.ts","../src/commands/build/status.ts","../src/commands/build/stop.ts","../src/commands/build/unsandbox.ts","../src/commands/build/upload.ts","../src/commands/build/validate.ts","../src/commands/build/env/get.ts","../src/commands/build/env/set.ts","../src/commands/build/tools/check.ts","../src/commands/build/tools/fmt.ts","../src/commands/object/delete.ts","../src/commands/object/get.ts","../src/commands/object/list.ts","../src/commands/object/put.ts","../src/commands/query/chunk-search.ts","../src/commands/query/document.ts","../src/commands/query/events.ts","../src/commands/query/search.ts"],"version":"5.8.3"}