@liquidmetal-ai/raindrop 0.2.9 → 0.2.11

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 (70) hide show
  1. package/README.md +36 -36
  2. package/dist/base-command.d.ts +2 -1
  3. package/dist/base-command.d.ts.map +1 -1
  4. package/dist/base-command.js +11 -1
  5. package/dist/codegen.d.ts +7 -0
  6. package/dist/codegen.d.ts.map +1 -1
  7. package/dist/codegen.js +90 -16
  8. package/dist/codegen.test.js +21 -0
  9. package/dist/commands/auth/login.d.ts.map +1 -1
  10. package/dist/commands/build/branch.d.ts.map +1 -1
  11. package/dist/commands/build/branch.js +16 -1
  12. package/dist/commands/build/checkout.d.ts.map +1 -1
  13. package/dist/commands/build/checkout.js +4 -1
  14. package/dist/commands/build/delete.js +2 -2
  15. package/dist/commands/build/deploy.d.ts.map +1 -1
  16. package/dist/commands/build/deploy.js +9 -3
  17. package/dist/commands/build/find.d.ts.map +1 -1
  18. package/dist/commands/build/find.js +3 -1
  19. package/dist/commands/build/generate.d.ts.map +1 -1
  20. package/dist/commands/build/generate.js +1 -0
  21. package/dist/commands/build/init.js +1 -1
  22. package/dist/commands/build/list.d.ts.map +1 -1
  23. package/dist/commands/build/list.js +3 -2
  24. package/dist/commands/build/sandbox.d.ts.map +1 -1
  25. package/dist/commands/build/sandbox.js +8 -2
  26. package/dist/commands/build/start.d.ts.map +1 -1
  27. package/dist/commands/build/start.js +5 -2
  28. package/dist/commands/build/status.d.ts.map +1 -1
  29. package/dist/commands/build/status.js +5 -4
  30. package/dist/commands/build/stop.d.ts.map +1 -1
  31. package/dist/commands/build/stop.js +5 -2
  32. package/dist/commands/build/unsandbox.d.ts.map +1 -1
  33. package/dist/commands/build/unsandbox.js +8 -2
  34. package/dist/commands/build/validate.js +3 -3
  35. package/dist/commands/object/delete.d.ts.map +1 -1
  36. package/dist/commands/object/delete.js +8 -4
  37. package/dist/commands/object/get.d.ts.map +1 -1
  38. package/dist/commands/object/get.js +8 -6
  39. package/dist/commands/object/list.d.ts.map +1 -1
  40. package/dist/commands/object/list.js +14 -10
  41. package/dist/commands/object/put.d.ts.map +1 -1
  42. package/dist/commands/object/put.js +11 -7
  43. package/dist/commands/query/chunk-search.d.ts.map +1 -1
  44. package/dist/commands/query/chunk-search.js +11 -9
  45. package/dist/commands/query/register-retriever.d.ts.map +1 -1
  46. package/dist/commands/query/register-retriever.js +2 -7
  47. package/dist/commands/query/search.d.ts.map +1 -1
  48. package/dist/commands/query/search.js +15 -15
  49. package/dist/config.d.ts +3 -0
  50. package/dist/config.d.ts.map +1 -1
  51. package/dist/config.js +2 -0
  52. package/dist/config.test.js +3 -0
  53. package/dist/deploy.d.ts.map +1 -1
  54. package/dist/deploy.js +0 -1
  55. package/dist/index.d.ts +2 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +18 -2
  58. package/dist/trace.d.ts +20 -0
  59. package/dist/trace.d.ts.map +1 -0
  60. package/dist/trace.js +117 -0
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/oclif.manifest.json +758 -758
  63. package/package.json +1 -1
  64. package/templates/db/common/kysely-d1.ts +173 -0
  65. package/templates/db/db/README.md +32 -0
  66. package/templates/db/package.json +19 -0
  67. package/templates/db/prisma/schema.prisma.hbs +46 -0
  68. package/templates/db/scripts/create_migration.mts +78 -0
  69. package/templates/db/scripts/seed-sql.mts +32 -0
  70. package/templates/db/scripts/seed.ts.hbs +219 -0
@@ -92,10 +92,10 @@ Deleted (application) at version (version)
92
92
  throw e;
93
93
  }
94
94
  if (this.flags.all) {
95
- this.log(`Deleted all versions of ${this.args.application}`);
95
+ console.log(`Deleted all versions of ${this.args.application}`);
96
96
  }
97
97
  else {
98
- this.log(`Deleted ${this.args.application} at version ${versionId}`);
98
+ console.log(`Deleted ${this.args.application} at version ${versionId}`);
99
99
  }
100
100
  }
101
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/build/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAmC;IAErD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;MAsCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+B3B"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/build/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAmC;IAErD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;MAsCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0C3B"}
@@ -51,7 +51,7 @@ Deploy a Raindrop application version.
51
51
  async run() {
52
52
  const config = await this.loadConfig();
53
53
  const versionId = this.flags.versionId ?? config.versionId;
54
- const unlock = this.flags.resume ? this.flags.lock ?? config.lock : undefined;
54
+ const unlock = this.flags.resume ? (this.flags.lock ?? config.lock) : undefined;
55
55
  if (this.flags.resume) {
56
56
  if (versionId === undefined) {
57
57
  this.error(`Cannot resume deployment without a versionId. Please specify a versionId or run without --resume to start a new deployment.`);
@@ -60,8 +60,11 @@ Deploy a Raindrop application version.
60
60
  this.error(`Cannot resume deployment without a lock. Please specify --lock or run without --resume to start a new deployment.`);
61
61
  }
62
62
  }
63
- // Resuming is _always_ amending
64
- const amend = this.flags.resume || this.flags.amend;
63
+ // Resuming and Sandbox is _always_ amending
64
+ const amend = config.sandbox || this.flags.resume || this.flags.amend;
65
+ if (config.sandbox) {
66
+ this.log(`🔔 Branch is in Sandbox mode, running deploy in ammend mode`);
67
+ }
65
68
  await deploy({
66
69
  command: this,
67
70
  root: this.flags.root,
@@ -75,5 +78,8 @@ Deploy a Raindrop application version.
75
78
  start: this.flags.start,
76
79
  impersonate: this.flags.impersonate,
77
80
  });
81
+ if (!amend) {
82
+ this.log(`🔔 You deployed a full version, updates will require a full versioned deployment to work`);
83
+ }
78
84
  }
79
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/commands/build/find.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAgC;IAElD,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAsCV;IAEI,cAAc,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAgD5G,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAO3B"}
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/commands/build/find.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAgC;IAElD,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAsCV;IAEI,cAAc,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAgD5G,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAO3B"}
@@ -3,6 +3,8 @@ import { valueOf } from '@liquidmetal-ai/drizzle/appify/build';
3
3
  import { Flags } from '@oclif/core';
4
4
  import { BaseCommand } from '../../base-command.js';
5
5
  import { EPOCH_TS } from '../../index.js';
6
+ import { toJsonString } from '@bufbuild/protobuf';
7
+ import { QueryResourcesResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_pb';
6
8
  export default class Find extends BaseCommand {
7
9
  static args = {};
8
10
  static description = 'find resources in Raindrop';
@@ -82,7 +84,7 @@ export default class Find extends BaseCommand {
82
84
  {}), ['name', 'resourceId', 'applicationName', 'applicationVersionId', 'type', 'attributes']);
83
85
  }
84
86
  else if (flags.output === 'json') {
85
- this.log(JSON.stringify(resp, null, 2));
87
+ console.log(toJsonString(QueryResourcesResponseSchema, resp, { prettySpaces: 2 }));
86
88
  }
87
89
  else {
88
90
  for (const r of resp.resources) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/commands/build/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASpD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW,CAAC,OAAO,QAAQ,CAAC;IAChE,OAAgB,IAAI,KAAM;IAE1B,OAAgB,WAAW,SAAwD;IAEnF,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;;;;MAgBnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8BlC"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/commands/build/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASpD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW,CAAC,OAAO,QAAQ,CAAC;IAChE,OAAgB,IAAI,KAAM;IAE1B,OAAgB,WAAW,SAAwD;IAEnF,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;;;;MAgBnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+BlC"}
@@ -38,6 +38,7 @@ export default class Generate extends BaseCommand {
38
38
  renderUserModifiableCode: true,
39
39
  renderNonUserModifiableCode: true,
40
40
  overwrite: false,
41
+ mergePackageJson: true,
41
42
  }, templateContext);
42
43
  // Write the gen files.
43
44
  const handlers = app.handlers();
@@ -52,6 +52,6 @@ Initialize a project in the current directory.
52
52
  catch (error) {
53
53
  this.error(`Could not initialize project at ${this.args.path}: ${error}`, { exit: 1 });
54
54
  }
55
- this.log(`Initialized LiquidMetal.AI in ${this.args.path}`);
55
+ console.log(`Initialized LiquidMetal.AI in ${this.args.path}`);
56
56
  }
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/build/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAC;AAGtH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,gCAAgC,CAAC;IAC9C,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CASzC,CAAC;AAEX,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAqC;IAEvD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;MAsBV;IAEF,gBAAgB,CAAC,YAAY,EAAE,gCAAgC,EAAE;;;;IAkCjE,iBAAiB,CAAC,YAAY,EAAE,gCAAgC,EAAE;IAqH5D,gBAAgB;IA0ChB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAG3B"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/build/list.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAEhC,SAAS,EACV,MAAM,yDAAyD,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,gCAAgC,CAAC;IAC9C,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CASzC,CAAC;AAEX,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAqC;IAEvD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;MAsBV;IAEF,gBAAgB,CAAC,YAAY,EAAE,gCAAgC,EAAE;;;;IAkCjE,iBAAiB,CAAC,YAAY,EAAE,gCAAgC,EAAE;IAqH5D,gBAAgB;IA0ChB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAG3B"}
@@ -1,8 +1,9 @@
1
- import { UnitState } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_pb';
1
+ import { ApplicationsResponseSchema, UnitState, } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_pb';
2
2
  import { timestampDate } from '@bufbuild/protobuf/wkt';
3
3
  import { Flags } from '@oclif/core';
4
4
  import { BaseCommand } from '../../base-command.js';
5
5
  import { EPOCH_TS } from '../../index.js';
6
+ import { toJsonString } from '@bufbuild/protobuf';
6
7
  export const statusString = {
7
8
  [UnitState.UNSPECIFIED]: '<unknown>',
8
9
  [UnitState.PENDING]: 'pending...',
@@ -205,7 +206,7 @@ List Raindrop catalog resources.
205
206
  {}), ['organizationId', 'name', 'versionId', 'branch', 'status', 'locked', ...(this.flags.all ? ['deletedAt'] : [])]);
206
207
  }
207
208
  else if (this.flags.output === 'json') {
208
- this.log(JSON.stringify(resp, null, 2));
209
+ console.log(toJsonString(ApplicationsResponseSchema, resp, { prettySpaces: 2 }));
209
210
  }
210
211
  else {
211
212
  for (const a of resp.applications) {
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../src/commands/build/sandbox.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW,CAAC,OAAO,OAAO,CAAC;IAC9D,MAAM,CAAC,IAAI;;MAET;IACF,MAAM,CAAC,WAAW,SAAyD;IAE3E,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB3B"}
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../src/commands/build/sandbox.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW,CAAC,OAAO,OAAO,CAAC;IAC9D,MAAM,CAAC,IAAI;;MAET;IACF,MAAM,CAAC,WAAW,SAAyD;IAE3E,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B3B"}
@@ -21,9 +21,12 @@ export default class Sandbox extends BaseCommand {
21
21
  manifest: Flags.string({ default: 'raindrop.manifest', description: 'project manifest' }),
22
22
  };
23
23
  async run() {
24
+ const config = await this.loadConfig();
25
+ if (config.lock) {
26
+ this.error('Operation not allowed: application is in a locked state');
27
+ }
24
28
  const { client: catalogService, userId, organizationId: defaultOrganizationId } = await this.catalogService();
25
29
  const organizationId = this.flags.impersonate ?? defaultOrganizationId;
26
- const config = await this.loadConfig();
27
30
  const apps = await this.loadManifest();
28
31
  const app = apps[0];
29
32
  const versionId = this.args.versionId ?? config.versionId;
@@ -41,6 +44,9 @@ export default class Sandbox extends BaseCommand {
41
44
  },
42
45
  ],
43
46
  });
44
- this.log(`Set ${valueOf(app.name)}@${versionId} as sandboxed.`);
47
+ // Mark application as sandboxed in config
48
+ config.sandbox = true;
49
+ await this.saveConfig(config);
50
+ console.log(`Set ${valueOf(app.name)}@${versionId} as sandboxed.`);
45
51
  }
46
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/build/start.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAkC;IAEpD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;MAyBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2B3B"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/build/start.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAkC;IAEpD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;MAyBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B3B"}
@@ -36,9 +36,12 @@ Start a Raindrop application.
36
36
  }),
37
37
  };
38
38
  async run() {
39
+ const config = await this.loadConfig();
40
+ if (config.lock) {
41
+ this.error('Operation not allowed: application is in a locked state');
42
+ }
39
43
  const { client: catalogService, userId, organizationId: defaultOrganizationId } = await this.catalogService();
40
44
  const organizationId = this.flags.impersonate ?? defaultOrganizationId;
41
- const config = await this.loadConfig();
42
45
  let applicationName = this.flags.application;
43
46
  if (!applicationName) {
44
47
  const apps = await this.loadManifest();
@@ -60,6 +63,6 @@ Start a Raindrop application.
60
63
  },
61
64
  ],
62
65
  });
63
- this.log(`Set ${applicationName}@${currentVersionId} as active.`);
66
+ console.log(`Set ${applicationName}@${currentVersionId} as active.`);
64
67
  }
65
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/build/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAC;AAIpG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CASzC,CAAC;AAEX,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAmD;IAErE,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAsCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAgE1B,iBAAiB,SAAK;IAEhB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BxD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/build/status.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAEd,SAAS,EACV,MAAM,yDAAyD,CAAC;AAKjE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CASzC,CAAC;AAEX,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAmD;IAErE,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAsCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAgE1B,iBAAiB,SAAK;IAEhB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BxD"}
@@ -1,8 +1,9 @@
1
1
  import { valueOf } from '@liquidmetal-ai/drizzle/appify/build';
2
- import { UnitState } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_pb';
2
+ import { StatusResponseSchema, UnitState, } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_pb';
3
3
  import { Flags, ux } from '@oclif/core';
4
4
  import Table from 'cli-table3';
5
5
  import * as readline from 'readline';
6
+ import { toJsonString } from '@bufbuild/protobuf';
6
7
  import { BaseCommand } from '../../base-command.js';
7
8
  export const statusString = {
8
9
  [UnitState.UNSPECIFIED]: '<unknown>',
@@ -96,11 +97,11 @@ export default class Status extends BaseCommand {
96
97
  head: ['Module', 'Status', 'URLs'],
97
98
  });
98
99
  table.push(...statusTable.map((row) => [row.module, row.status, row.urls]));
99
- this.log(table.toString());
100
+ console.log(table.toString());
100
101
  return;
101
102
  }
102
103
  if (flags.output === 'json') {
103
- this.log(JSON.stringify(applicationStatus, null, 2));
104
+ console.log(toJsonString(StatusResponseSchema, applicationStatus, { prettySpaces: 2 }));
104
105
  return;
105
106
  }
106
107
  let watchStatus = applicationStatus;
@@ -142,7 +143,7 @@ export default class Status extends BaseCommand {
142
143
  lines.push(`${padding}${module.name}: ${statusStateString(module.state)} ${module.urls.join(', ')}`);
143
144
  }
144
145
  for (const line of lines) {
145
- this.log(line);
146
+ console.log(line);
146
147
  }
147
148
  this.linesLastRendered = lines.length;
148
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/commands/build/stop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAiC;IAEnD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;MAyBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2B3B"}
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/commands/build/stop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAiC;IAEnD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;MAyBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B3B"}
@@ -36,9 +36,12 @@ Stop a Raindrop application.
36
36
  }),
37
37
  };
38
38
  async run() {
39
+ const config = await this.loadConfig();
40
+ if (config.lock) {
41
+ this.error('Operation not allowed: application is in a locked state');
42
+ }
39
43
  const { client: catalogService, userId, organizationId: defaultOrganizationId } = await this.catalogService();
40
44
  const organizationId = this.flags.impersonate ?? defaultOrganizationId;
41
- const config = await this.loadConfig();
42
45
  let applicationName = this.flags.application;
43
46
  if (!applicationName) {
44
47
  const apps = await this.loadManifest();
@@ -60,6 +63,6 @@ Stop a Raindrop application.
60
63
  },
61
64
  ],
62
65
  });
63
- this.log(`Set ${applicationName}@${currentVersionId} as stopped.`);
66
+ console.log(`Set ${applicationName}@${currentVersionId} as stopped.`);
64
67
  }
65
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"unsandbox.d.ts","sourceRoot":"","sources":["../../../src/commands/build/unsandbox.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,WAAW,SAA2D;IAE7E,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB3B"}
1
+ {"version":3,"file":"unsandbox.d.ts","sourceRoot":"","sources":["../../../src/commands/build/unsandbox.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,WAAW,SAA2D;IAE7E,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B3B"}
@@ -21,9 +21,12 @@ export default class Unsandbox extends BaseCommand {
21
21
  manifest: Flags.string({ default: 'raindrop.manifest', description: 'project manifest' }),
22
22
  };
23
23
  async run() {
24
+ const config = await this.loadConfig();
25
+ if (config.lock) {
26
+ this.error('Operation not allowed: application is in a locked state');
27
+ }
24
28
  const { client: catalogService, userId, organizationId: defaultOrganizationId } = await this.catalogService();
25
29
  const organizationId = this.flags.impersonate ?? defaultOrganizationId;
26
- const config = await this.loadConfig();
27
30
  const apps = await this.loadManifest();
28
31
  const app = apps[0];
29
32
  const versionId = this.args.versionId ?? config.versionId;
@@ -41,6 +44,9 @@ export default class Unsandbox extends BaseCommand {
41
44
  },
42
45
  ],
43
46
  });
44
- this.log(`Set ${valueOf(app.name)}@${versionId} as unsandboxed.`);
47
+ // Mark application as unsandboxed in config
48
+ config.sandbox = false;
49
+ await this.saveConfig(config);
50
+ console.log(`Set ${valueOf(app.name)}@${versionId} as unsandboxed.`);
45
51
  }
46
52
  }
@@ -42,14 +42,14 @@ export default class Build extends BaseCommand {
42
42
  if (version === null) {
43
43
  this.error('Failed to determine @liquidmetal-ai/raindrop-framework version; is it installed?', { exit: 1 });
44
44
  }
45
- this.log(`Using @liquidmetal-ai/raindrop-framework version ${version}`);
45
+ console.log(`Using @liquidmetal-ai/raindrop-framework version ${version}`);
46
46
  // Run TypeScript type checking
47
- this.log('Running type check...');
47
+ console.log('Running type check...');
48
48
  const typeCheckPassed = await runTypeCheck(this.flags.root);
49
49
  if (!typeCheckPassed) {
50
50
  this.error('Type check failed. Please fix the TypeScript errors before building.');
51
51
  }
52
- this.log('Type check passed');
52
+ console.log('Type check passed');
53
53
  const buildDir = path.isAbsolute(this.flags.output)
54
54
  ? this.flags.output
55
55
  : path.join(this.flags.root, this.flags.output);
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/object/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW,CAAC,OAAO,YAAY,CAAC;IACxE,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,WAAW,SAA2C;IAE7D,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;MA0BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB3B"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/object/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW,CAAC,OAAO,YAAY,CAAC;IACxE,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,WAAW,SAA2C;IAE7D,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;MA0BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB3B"}
@@ -1,5 +1,7 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../base-command.js';
3
+ import { toJsonString } from '@bufbuild/protobuf';
4
+ import { DeleteObjectResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/object_pb';
3
5
  export default class ObjectDelete extends BaseCommand {
4
6
  static args = {
5
7
  key: Args.string({
@@ -17,7 +19,7 @@ Delete file with key 'my-key' from my-bucket
17
19
  ...BaseCommand.HIDDEN_FLAGS,
18
20
  bucket: Flags.string({
19
21
  char: 'b',
20
- description: 'bucket name',
22
+ description: 'bucket ID',
21
23
  required: true,
22
24
  }),
23
25
  output: Flags.string({
@@ -42,16 +44,18 @@ Delete file with key 'my-key' from my-bucket
42
44
  };
43
45
  async run() {
44
46
  const { args, flags } = await this.parse(ObjectDelete);
45
- const { client: objectService } = await this.objectService();
47
+ const { client: objectService, userId, organizationId } = await this.objectService();
46
48
  const response = await objectService.deleteObject({
49
+ userId,
50
+ organizationId,
47
51
  bucket: flags.bucket,
48
52
  key: args.key,
49
53
  });
50
54
  if (flags.output === 'json') {
51
- this.log(JSON.stringify(response, null, 2));
55
+ console.log(toJsonString(DeleteObjectResponseSchema, response, { prettySpaces: 2 }));
52
56
  }
53
57
  else {
54
- this.log('Successfully deleted file:');
58
+ console.log('Successfully deleted file:');
55
59
  }
56
60
  }
57
61
  }
@@ -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;;;;;;;;;;;MA0BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8C3B"}
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;;;;;;;;;;;MA0BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgD3B"}
@@ -26,7 +26,7 @@ Download file with key 'my-key' from my-bucket to output.txt
26
26
  ...BaseCommand.HIDDEN_FLAGS,
27
27
  bucket: Flags.string({
28
28
  char: 'b',
29
- description: 'bucket name',
29
+ description: 'bucket ID',
30
30
  required: true,
31
31
  }),
32
32
  format: Flags.string({
@@ -51,8 +51,10 @@ Download file with key 'my-key' from my-bucket to output.txt
51
51
  };
52
52
  async run() {
53
53
  const { args, flags } = await this.parse(ObjectGet);
54
- const { client: objectService } = await this.objectService();
54
+ const { client: objectService, userId, organizationId } = await this.objectService();
55
55
  const response = await objectService.getObject({
56
+ userId,
57
+ organizationId,
56
58
  bucket: flags.bucket,
57
59
  key: args.key,
58
60
  });
@@ -62,7 +64,7 @@ Download file with key 'my-key' from my-bucket to output.txt
62
64
  }
63
65
  switch (flags.format) {
64
66
  case 'json':
65
- this.log(JSON.stringify({
67
+ console.log(JSON.stringify({
66
68
  content: response.content.toString(),
67
69
  contentType: response.contentType,
68
70
  }, null, 2));
@@ -74,10 +76,10 @@ Download file with key 'my-key' from my-bucket to output.txt
74
76
  case 'text': {
75
77
  const outputPath = args.output || path.basename(args.key);
76
78
  await fs.writeFile(outputPath, response.content);
77
- this.log('Successfully downloaded file:');
78
- this.log(`Saved to: ${outputPath}`);
79
+ console.log('Successfully downloaded file:');
80
+ console.log(`Saved to: ${outputPath}`);
79
81
  if (response.contentType) {
80
- this.log(`Content-Type: ${response.contentType}`);
82
+ console.log(`Content-Type: ${response.contentType}`);
81
83
  }
82
84
  break;
83
85
  }
@@ -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;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;;;;;;;;;;;MA0BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyC3B"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/object/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,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;;;;;;;;;;;MA0BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2C3B"}
@@ -1,5 +1,7 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../base-command.js';
3
+ import { toJsonString } from '@bufbuild/protobuf';
4
+ import { ListObjectsResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/object_pb';
3
5
  export default class ObjectList extends BaseCommand {
4
6
  static description = 'List objects in a bucket';
5
7
  static examples = [
@@ -11,7 +13,7 @@ List all objects in my-bucket
11
13
  ...BaseCommand.HIDDEN_FLAGS,
12
14
  bucket: Flags.string({
13
15
  char: 'b',
14
- description: 'bucket name',
16
+ description: 'bucket ID',
15
17
  required: true,
16
18
  }),
17
19
  output: Flags.string({
@@ -36,17 +38,19 @@ List all objects in my-bucket
36
38
  };
37
39
  async run() {
38
40
  const { flags } = await this.parse(ObjectList);
39
- const { client: objectService } = await this.objectService();
41
+ const { client: objectService, userId, organizationId } = await this.objectService();
40
42
  const response = await objectService.listObjects({
43
+ userId,
44
+ organizationId,
41
45
  bucket: flags.bucket,
42
46
  });
43
47
  if (!response.objects?.length) {
44
- this.log('No objects found in bucket');
48
+ console.log('No objects found in bucket');
45
49
  return;
46
50
  }
47
51
  switch (flags.output) {
48
52
  case 'json':
49
- this.log(JSON.stringify(response, null, 2));
53
+ console.log(toJsonString(ListObjectsResponseSchema, response, { prettySpaces: 2 }));
50
54
  break;
51
55
  case 'table':
52
56
  console.table(response.objects.map((obj) => ({
@@ -57,13 +61,13 @@ List all objects in my-bucket
57
61
  })));
58
62
  break;
59
63
  default:
60
- this.log(`Objects in bucket ${flags.bucket}:`);
64
+ console.log(`Objects in bucket ${flags.bucket}:`);
61
65
  for (const obj of response.objects) {
62
- this.log(`Key: ${obj.key}`);
63
- this.log(` Size: ${obj.size} bytes`);
64
- this.log(` Content-Type: ${obj.contentType || 'N/A'}`);
65
- this.log(` Last Modified: ${obj.lastModified || 'N/A'}`);
66
- this.log('---');
66
+ console.log(`Key: ${obj.key}`);
67
+ console.log(` Size: ${obj.size} bytes`);
68
+ console.log(` Content-Type: ${obj.contentType || 'N/A'}`);
69
+ console.log(` Last Modified: ${obj.lastModified || 'N/A'}`);
70
+ console.log('---');
67
71
  }
68
72
  }
69
73
  }
@@ -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;AAIpD,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;;;;;;;;;;;;MA+BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B1B,OAAO,CAAC,cAAc;CAavB"}
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;;;;;;;;;;;;MA+BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B1B,OAAO,CAAC,cAAc;CAavB"}
@@ -2,6 +2,8 @@ import { Args, Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../base-command.js';
3
3
  import * as fs from 'node:fs/promises';
4
4
  import * as path from 'path';
5
+ import { toJsonString } from '@bufbuild/protobuf';
6
+ import { PutObjectResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/object_pb';
5
7
  export default class ObjectPut extends BaseCommand {
6
8
  static args = {
7
9
  file: Args.file({
@@ -24,7 +26,7 @@ Upload myfile.txt to my-bucket with key 'my-key'
24
26
  ...BaseCommand.HIDDEN_FLAGS,
25
27
  bucket: Flags.string({
26
28
  char: 'b',
27
- description: 'bucket name',
29
+ description: 'bucket ID',
28
30
  required: true,
29
31
  }),
30
32
  contentType: Flags.string({
@@ -54,25 +56,27 @@ Upload myfile.txt to my-bucket with key 'my-key'
54
56
  };
55
57
  async run() {
56
58
  const { args, flags } = await this.parse(ObjectPut);
57
- const { client: objectService } = await this.objectService();
59
+ const { client: objectService, userId, organizationId } = await this.objectService();
58
60
  // Read the file
59
61
  const fileContent = await fs.readFile(args.file);
60
62
  // Get content type if not specified
61
63
  const contentType = flags.contentType || this.getContentType(args.file);
62
64
  const response = await objectService.putObject({
65
+ userId,
66
+ organizationId,
63
67
  bucket: flags.bucket,
64
68
  key: args.key,
65
69
  content: fileContent,
66
70
  contentType,
67
71
  });
68
72
  if (flags.output === 'json') {
69
- this.log(JSON.stringify(response, null, 2));
73
+ console.log(toJsonString(PutObjectResponseSchema, response, { prettySpaces: 2 }));
70
74
  }
71
75
  else {
72
- this.log('Successfully uploaded file:');
73
- this.log(`Bucket: ${response.bucket}`);
74
- this.log(`Key: ${response.key}`);
75
- this.log(`Success: ${response.success}`);
76
+ console.log('Successfully uploaded file:');
77
+ console.log(`Bucket: ${response.bucket}`);
78
+ console.log(`Key: ${response.key}`);
79
+ console.log(`Success: ${response.success}`);
76
80
  }
77
81
  }
78
82
  getContentType(filePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-search.d.ts","sourceRoot":"","sources":["../../../src/commands/query/chunk-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,WAAW,SAAoF;IAEtG,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;MAqBV;IAEI,WAAW,CAAC,KAAK,EAAE,MAAM;IA+BzB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAI3B"}
1
+ {"version":3,"file":"chunk-search.d.ts","sourceRoot":"","sources":["../../../src/commands/query/chunk-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,WAAW,SAAoF;IAEtG,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;MAqBV;IAEI,WAAW,CAAC,KAAK,EAAE,MAAM;IA+BzB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAI3B"}
@@ -1,6 +1,8 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../base-command.js';
3
3
  import { ulid } from '@liquidmetal-ai/common/ulid';
4
+ import { toJsonString } from '@bufbuild/protobuf';
5
+ import { RagSearchResponseSchema } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/search_agent_pb';
4
6
  export default class RagSearch extends BaseCommand {
5
7
  static args = {
6
8
  query: Args.string({
@@ -45,21 +47,21 @@ Run a RAG search query against a Smart Bucket.
45
47
  });
46
48
  // Output results based on format flag
47
49
  if (this.flags.output === 'json') {
48
- this.log(JSON.stringify(response, null, 2));
50
+ console.log(toJsonString(RagSearchResponseSchema, response, { prettySpaces: 2 }));
49
51
  }
50
52
  else {
51
53
  // Create a nicely formatted table
52
- this.log('\nSearch Results:\n');
54
+ console.log('\nSearch Results:\n');
53
55
  for (const result of response.results) {
54
- this.log('----------------------------------------');
55
- this.log(`Type: ${result.type || 'N/A'}`);
56
- this.log(`Score: ${result.score || 0}`);
57
- this.log(`Source: ${JSON.parse(result.source || '{}').object || result.source}`);
58
- this.log(`Content: ${result.text || 'N/A'}`);
59
- this.log('----------------------------------------\n');
56
+ console.log('----------------------------------------');
57
+ console.log(`Type: ${result.type || 'N/A'}`);
58
+ console.log(`Score: ${result.score || 0}`);
59
+ console.log(`Source: ${JSON.parse(result.source || '{}').object || result.source}`);
60
+ console.log(`Content: ${result.text || 'N/A'}`);
61
+ console.log('----------------------------------------\n');
60
62
  }
61
63
  if (response.results.length === 0) {
62
- this.log('No results found.');
64
+ console.log('No results found.');
63
65
  }
64
66
  }
65
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"register-retriever.d.ts","sourceRoot":"","sources":["../../../src/commands/query/register-retriever.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW,CAAC,OAAO,iBAAiB,CAAC;IAClF,MAAM,CAAC,IAAI;;;;;MAiBT;IAEF,MAAM,CAAC,WAAW,SAA4D;IAE9E,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB3B"}
1
+ {"version":3,"file":"register-retriever.d.ts","sourceRoot":"","sources":["../../../src/commands/query/register-retriever.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW,CAAC,OAAO,iBAAiB,CAAC;IAClF,MAAM,CAAC,IAAI;;;;;MAiBT;IAEF,MAAM,CAAC,WAAW,SAA4D;IAE9E,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB3B"}
@@ -32,18 +32,13 @@ Register a new retriever tool.
32
32
  const { args } = await this.parse(RegisterRetriever);
33
33
  const { client: searchAgentService } = await this.searchAgentService();
34
34
  try {
35
- const response = await searchAgentService.registerRetrieverTool({
35
+ await searchAgentService.registerRetrieverTool({
36
36
  bucket: args.bucket,
37
37
  url: args.url,
38
38
  deleteUrl: args.deleteUrl,
39
39
  bucketName: args.bucketName,
40
40
  });
41
- if (response?.message) {
42
- this.log(response.message);
43
- }
44
- else {
45
- this.error('No response message received from service');
46
- }
41
+ console.log(`Retriever registered successfully: bucket_id=${args.bucket}, url=${args.url}, deleteUrl=${args.deleteUrl}, bucketName=${args.bucketName}`);
47
42
  }
48
43
  catch (error) {
49
44
  this.error(`Failed to register retriever: ${error instanceof Error ? error.message : 'Unknown error occurred'}`);
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/query/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW,CAAC,OAAO,WAAW,CAAC;IACtE,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,WAAW,SAAsE;IAExF,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;MA8BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuE3B"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/query/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW,CAAC,OAAO,WAAW,CAAC;IACtE,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,WAAW,SAAsE;IAExF,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;MA8BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyE3B"}