@liquidmetal-ai/raindrop 0.3.1 → 0.3.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.
Files changed (41) hide show
  1. package/README.md +70 -39
  2. package/dist/base-command.d.ts +5 -5
  3. package/dist/base-command.d.ts.map +1 -1
  4. package/dist/commands/build/branch.d.ts.map +1 -1
  5. package/dist/commands/build/branch.js +15 -2
  6. package/dist/commands/build/clone.d.ts +25 -0
  7. package/dist/commands/build/clone.d.ts.map +1 -0
  8. package/dist/commands/build/clone.js +146 -0
  9. package/dist/commands/build/delete.js +1 -1
  10. package/dist/commands/build/env/get.js +1 -1
  11. package/dist/commands/build/env/set.js +2 -2
  12. package/dist/commands/build/find.d.ts +2 -0
  13. package/dist/commands/build/find.d.ts.map +1 -1
  14. package/dist/commands/build/find.js +24 -18
  15. package/dist/commands/build/sandbox.d.ts.map +1 -1
  16. package/dist/commands/build/sandbox.js +18 -26
  17. package/dist/commands/build/start.js +1 -1
  18. package/dist/commands/build/status.js +2 -2
  19. package/dist/commands/build/stop.js +1 -1
  20. package/dist/commands/build/unsandbox.d.ts.map +1 -1
  21. package/dist/commands/build/unsandbox.js +18 -26
  22. package/dist/commands/build/upload.js +2 -2
  23. package/dist/commands/object/list.d.ts.map +1 -1
  24. package/dist/commands/object/list.js +4 -2
  25. package/dist/commands/query/chunk-search.d.ts.map +1 -1
  26. package/dist/commands/query/chunk-search.js +5 -2
  27. package/dist/commands/query/search.d.ts +1 -0
  28. package/dist/commands/query/search.d.ts.map +1 -1
  29. package/dist/commands/query/search.js +20 -4
  30. package/dist/deploy.d.ts +11 -0
  31. package/dist/deploy.d.ts.map +1 -1
  32. package/dist/deploy.js +32 -0
  33. package/dist/index.d.ts +6 -5
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +3 -3
  36. package/dist/strict-client.d.ts +37 -0
  37. package/dist/strict-client.d.ts.map +1 -0
  38. package/dist/strict-client.js +10 -0
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/oclif.manifest.json +957 -845
  41. package/package.json +1 -1
package/README.md CHANGED
@@ -20,7 +20,7 @@ $ npm install -g @liquidmetal-ai/raindrop
20
20
  $ raindrop COMMAND
21
21
  running command...
22
22
  $ raindrop (--version)
23
- @liquidmetal-ai/raindrop/0.3.1 darwin-arm64 node-v23.10.0
23
+ @liquidmetal-ai/raindrop/0.3.3 darwin-arm64 node-v23.10.0
24
24
  $ raindrop --help [COMMAND]
25
25
  USAGE
26
26
  $ raindrop COMMAND
@@ -37,6 +37,7 @@ USAGE
37
37
  * [`raindrop auth select`](#raindrop-auth-select)
38
38
  * [`raindrop build branch BRANCH`](#raindrop-build-branch-branch)
39
39
  * [`raindrop build checkout [VERSION]`](#raindrop-build-checkout-version)
40
+ * [`raindrop build clone ID [PATH]`](#raindrop-build-clone-id-path)
40
41
  * [`raindrop build delete [APPLICATION]`](#raindrop-build-delete-application)
41
42
  * [`raindrop build deploy`](#raindrop-build-deploy)
42
43
  * [`raindrop build env get VAR`](#raindrop-build-env-get-var)
@@ -89,7 +90,7 @@ DESCRIPTION
89
90
  List authentications
90
91
  ```
91
92
 
92
- _See code: [src/commands/auth/list.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/auth/list.ts)_
93
+ _See code: [src/commands/auth/list.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/auth/list.ts)_
93
94
 
94
95
  ## `raindrop auth login`
95
96
 
@@ -103,7 +104,7 @@ DESCRIPTION
103
104
  Logs a user into the LiquidMetal platform. Supports browser-based authentication.
104
105
  ```
105
106
 
106
- _See code: [src/commands/auth/login.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/auth/login.ts)_
107
+ _See code: [src/commands/auth/login.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/auth/login.ts)_
107
108
 
108
109
  ## `raindrop auth logout`
109
110
 
@@ -117,7 +118,7 @@ DESCRIPTION
117
118
  Logout authentications
118
119
  ```
119
120
 
120
- _See code: [src/commands/auth/logout.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/auth/logout.ts)_
121
+ _See code: [src/commands/auth/logout.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/auth/logout.ts)_
121
122
 
122
123
  ## `raindrop auth select`
123
124
 
@@ -134,7 +135,7 @@ DESCRIPTION
134
135
  Select active organization
135
136
  ```
136
137
 
137
- _See code: [src/commands/auth/select.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/auth/select.ts)_
138
+ _See code: [src/commands/auth/select.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/auth/select.ts)_
138
139
 
139
140
  ## `raindrop build branch BRANCH`
140
141
 
@@ -163,7 +164,7 @@ EXAMPLES
163
164
  Branch a Raindrop application.
164
165
  ```
165
166
 
166
- _See code: [src/commands/build/branch.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/branch.ts)_
167
+ _See code: [src/commands/build/branch.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/branch.ts)_
167
168
 
168
169
  ## `raindrop build checkout [VERSION]`
169
170
 
@@ -189,7 +190,35 @@ EXAMPLES
189
190
  Switched to version: 01jux6z20m4gbhn5kaa4mcm2jr
190
191
  ```
191
192
 
192
- _See code: [src/commands/build/checkout.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/checkout.ts)_
193
+ _See code: [src/commands/build/checkout.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/checkout.ts)_
194
+
195
+ ## `raindrop build clone ID [PATH]`
196
+
197
+ clone a LiquidMetal.AI project
198
+
199
+ ```
200
+ USAGE
201
+ $ raindrop build clone ID [PATH] [--overwrite]
202
+
203
+ ARGUMENTS
204
+ ID liquidmetal project ID to clone (e.g., liquidmetal/smartbucket)
205
+ PATH [default: .] Path to initialize the project in
206
+
207
+ FLAGS
208
+ --overwrite Overwrite existing files
209
+
210
+ DESCRIPTION
211
+ clone a LiquidMetal.AI project
212
+
213
+ EXAMPLES
214
+ $ raindrop build clone .
215
+ Clone a project in the current directory.
216
+
217
+ $ raindrop build clone
218
+ Clone a project in the specified directory.
219
+ ```
220
+
221
+ _See code: [src/commands/build/clone.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/clone.ts)_
193
222
 
194
223
  ## `raindrop build delete [APPLICATION]`
195
224
 
@@ -218,7 +247,7 @@ EXAMPLES
218
247
  Deleted (application) at version (version)
219
248
  ```
220
249
 
221
- _See code: [src/commands/build/delete.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/delete.ts)_
250
+ _See code: [src/commands/build/delete.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/delete.ts)_
222
251
 
223
252
  ## `raindrop build deploy`
224
253
 
@@ -246,7 +275,7 @@ EXAMPLES
246
275
  Deploy a Raindrop application version.
247
276
  ```
248
277
 
249
- _See code: [src/commands/build/deploy.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/deploy.ts)_
278
+ _See code: [src/commands/build/deploy.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/deploy.ts)_
250
279
 
251
280
  ## `raindrop build env get VAR`
252
281
 
@@ -273,7 +302,7 @@ EXAMPLES
273
302
  sets an env var/secret.
274
303
  ```
275
304
 
276
- _See code: [src/commands/build/env/get.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/env/get.ts)_
305
+ _See code: [src/commands/build/env/get.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/env/get.ts)_
277
306
 
278
307
  ## `raindrop build env set VAR [VALUE]`
279
308
 
@@ -302,7 +331,7 @@ EXAMPLES
302
331
  sets an env var/secret.
303
332
  ```
304
333
 
305
- _See code: [src/commands/build/env/set.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/env/set.ts)_
334
+ _See code: [src/commands/build/env/set.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/env/set.ts)_
306
335
 
307
336
  ## `raindrop build find`
308
337
 
@@ -311,7 +340,7 @@ find resources in Raindrop
311
340
  ```
312
341
  USAGE
313
342
  $ raindrop build find [-r <value>] [-m <value>] [-a <value>] [-v <value>] [--moduleType <value>] [-o
314
- text|table|json]
343
+ text|table|json] [--all]
315
344
 
316
345
  FLAGS
317
346
  -a, --application=<value> application
@@ -320,6 +349,7 @@ FLAGS
320
349
  <options: text|table|json>
321
350
  -r, --root=<value> [default: /Users/ian/liquidmetal/packages/raindrop] root directory
322
351
  -v, --version=<value> application version
352
+ --all query modules for all applications
323
353
  --moduleType=<value> filter by module type (e.g. smartbucket)
324
354
 
325
355
  DESCRIPTION
@@ -329,7 +359,7 @@ EXAMPLES
329
359
  $ raindrop build find .
330
360
  ```
331
361
 
332
- _See code: [src/commands/build/find.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/find.ts)_
362
+ _See code: [src/commands/build/find.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/find.ts)_
333
363
 
334
364
  ## `raindrop build generate`
335
365
 
@@ -351,7 +381,7 @@ EXAMPLES
351
381
  $ raindrop build generate
352
382
  ```
353
383
 
354
- _See code: [src/commands/build/generate.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/generate.ts)_
384
+ _See code: [src/commands/build/generate.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/generate.ts)_
355
385
 
356
386
  ## `raindrop build init [PATH]`
357
387
 
@@ -375,7 +405,7 @@ EXAMPLES
375
405
  Initialize a project in the current directory.
376
406
  ```
377
407
 
378
- _See code: [src/commands/build/init.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/init.ts)_
408
+ _See code: [src/commands/build/init.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/init.ts)_
379
409
 
380
410
  ## `raindrop build list`
381
411
 
@@ -398,7 +428,7 @@ EXAMPLES
398
428
  List Raindrop catalog resources.
399
429
  ```
400
430
 
401
- _See code: [src/commands/build/list.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/list.ts)_
431
+ _See code: [src/commands/build/list.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/list.ts)_
402
432
 
403
433
  ## `raindrop build sandbox`
404
434
 
@@ -419,7 +449,7 @@ EXAMPLES
419
449
  $ raindrop build sandbox
420
450
  ```
421
451
 
422
- _See code: [src/commands/build/sandbox.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/sandbox.ts)_
452
+ _See code: [src/commands/build/sandbox.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/sandbox.ts)_
423
453
 
424
454
  ## `raindrop build start`
425
455
 
@@ -443,7 +473,7 @@ EXAMPLES
443
473
  Start a Raindrop application.
444
474
  ```
445
475
 
446
- _See code: [src/commands/build/start.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/start.ts)_
476
+ _See code: [src/commands/build/start.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/start.ts)_
447
477
 
448
478
  ## `raindrop build status`
449
479
 
@@ -468,7 +498,7 @@ EXAMPLES
468
498
  $ raindrop build status .
469
499
  ```
470
500
 
471
- _See code: [src/commands/build/status.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/status.ts)_
501
+ _See code: [src/commands/build/status.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/status.ts)_
472
502
 
473
503
  ## `raindrop build stop`
474
504
 
@@ -492,7 +522,7 @@ EXAMPLES
492
522
  Stop a Raindrop application.
493
523
  ```
494
524
 
495
- _See code: [src/commands/build/stop.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/stop.ts)_
525
+ _See code: [src/commands/build/stop.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/stop.ts)_
496
526
 
497
527
  ## `raindrop build tools check`
498
528
 
@@ -513,7 +543,7 @@ EXAMPLES
513
543
  $ raindrop build tools check
514
544
  ```
515
545
 
516
- _See code: [src/commands/build/tools/check.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/tools/check.ts)_
546
+ _See code: [src/commands/build/tools/check.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/tools/check.ts)_
517
547
 
518
548
  ## `raindrop build tools fmt`
519
549
 
@@ -534,7 +564,7 @@ EXAMPLES
534
564
  $ raindrop build tools fmt
535
565
  ```
536
566
 
537
- _See code: [src/commands/build/tools/fmt.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/tools/fmt.ts)_
567
+ _See code: [src/commands/build/tools/fmt.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/tools/fmt.ts)_
538
568
 
539
569
  ## `raindrop build unsandbox`
540
570
 
@@ -555,7 +585,7 @@ EXAMPLES
555
585
  $ raindrop build unsandbox
556
586
  ```
557
587
 
558
- _See code: [src/commands/build/unsandbox.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/unsandbox.ts)_
588
+ _See code: [src/commands/build/unsandbox.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/unsandbox.ts)_
559
589
 
560
590
  ## `raindrop build upload`
561
591
 
@@ -578,7 +608,7 @@ EXAMPLES
578
608
  $ raindrop build upload
579
609
  ```
580
610
 
581
- _See code: [src/commands/build/upload.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/upload.ts)_
611
+ _See code: [src/commands/build/upload.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/upload.ts)_
582
612
 
583
613
  ## `raindrop build validate`
584
614
 
@@ -600,7 +630,7 @@ EXAMPLES
600
630
  $ raindrop build validate
601
631
  ```
602
632
 
603
- _See code: [src/commands/build/validate.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/build/validate.ts)_
633
+ _See code: [src/commands/build/validate.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/build/validate.ts)_
604
634
 
605
635
  ## `raindrop help [COMMAND]`
606
636
 
@@ -646,7 +676,7 @@ EXAMPLES
646
676
  Delete file with key 'my-key' from my-bucket
647
677
  ```
648
678
 
649
- _See code: [src/commands/object/delete.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/object/delete.ts)_
679
+ _See code: [src/commands/object/delete.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/object/delete.ts)_
650
680
 
651
681
  ## `raindrop object get KEY [OUTPUT]`
652
682
 
@@ -676,7 +706,7 @@ EXAMPLES
676
706
  Download file with key 'my-key' from my-bucket to output.txt
677
707
  ```
678
708
 
679
- _See code: [src/commands/object/get.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/object/get.ts)_
709
+ _See code: [src/commands/object/get.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/object/get.ts)_
680
710
 
681
711
  ## `raindrop object list`
682
712
 
@@ -699,7 +729,7 @@ EXAMPLES
699
729
  List all objects in my-bucket
700
730
  ```
701
731
 
702
- _See code: [src/commands/object/list.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/object/list.ts)_
732
+ _See code: [src/commands/object/list.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/object/list.ts)_
703
733
 
704
734
  ## `raindrop object put FILE KEY`
705
735
 
@@ -727,7 +757,7 @@ EXAMPLES
727
757
  Upload myfile.txt to my-bucket with key 'my-key'
728
758
  ```
729
759
 
730
- _See code: [src/commands/object/put.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/object/put.ts)_
760
+ _See code: [src/commands/object/put.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/object/put.ts)_
731
761
 
732
762
  ## `raindrop plugins`
733
763
 
@@ -1042,7 +1072,7 @@ EXAMPLES
1042
1072
  Run a RAG search query against a Smart Bucket.
1043
1073
  ```
1044
1074
 
1045
- _See code: [src/commands/query/chunk-search.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/query/chunk-search.ts)_
1075
+ _See code: [src/commands/query/chunk-search.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/query/chunk-search.ts)_
1046
1076
 
1047
1077
  ## `raindrop query search [QUERY]`
1048
1078
 
@@ -1050,29 +1080,30 @@ Run a search query against a smart bucket using natural language
1050
1080
 
1051
1081
  ```
1052
1082
  USAGE
1053
- $ raindrop query search [QUERY] [--requestId <value>] [-p <value>] [-o text|json]
1083
+ $ raindrop query search [QUERY] [-b <value>...] [--requestId <value>] [-p <value>] [-o text|json]
1054
1084
 
1055
1085
  ARGUMENTS
1056
1086
  QUERY search query
1057
1087
 
1058
1088
  FLAGS
1059
- -o, --output=<option> [default: text] output format
1060
- <options: text|json>
1061
- -p, --page=<value> [default: 1] page number for paginated results
1062
- --requestId=<value> request ID for pagination
1089
+ -b, --buckets=<value>... bucket IDs to search in
1090
+ -o, --output=<option> [default: text] output format
1091
+ <options: text|json>
1092
+ -p, --page=<value> [default: 1] page number for paginated results
1093
+ --requestId=<value> request ID for pagination
1063
1094
 
1064
1095
  DESCRIPTION
1065
1096
  Run a search query against a smart bucket using natural language
1066
1097
 
1067
1098
  EXAMPLES
1068
- $ raindrop query search "What is LiquidMetal?"
1069
- Run a new supervisor agent search query.
1099
+ $ raindrop query search "What is LiquidMetal?" --buckets my-bucket-1 my-bucket-2
1100
+ Run a new supervisor agent search query across multiple buckets.
1070
1101
 
1071
1102
  $ raindrop query search --requestId 01HNG4V2RJXS5T --page 2
1072
1103
  Get page 2 of previous search results.
1073
1104
  ```
1074
1105
 
1075
- _See code: [src/commands/query/search.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/query/search.ts)_
1106
+ _See code: [src/commands/query/search.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/query/search.ts)_
1076
1107
 
1077
1108
  ## `raindrop tail`
1078
1109
 
@@ -1086,5 +1117,5 @@ DESCRIPTION
1086
1117
  tail logs of applications deployed
1087
1118
  ```
1088
1119
 
1089
- _See code: [src/commands/tail.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.1/src/commands/tail.ts)_
1120
+ _See code: [src/commands/tail.ts](https://github.com/liquidmetal-ai/liquidmetal/blob/v0.3.3/src/commands/tail.ts)_
1090
1121
  <!-- commandsstop -->
@@ -1,4 +1,3 @@
1
- import type { Client } from '@connectrpc/connect';
2
1
  import { Application } from '@liquidmetal-ai/drizzle/appify/build';
3
2
  import { CatalogService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/catalog_pb';
4
3
  import { ObjectService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/object_pb';
@@ -7,6 +6,7 @@ import { SearchAgentService } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1
7
6
  import { Command, Interfaces } from '@oclif/core';
8
7
  import { Config } from './config.js';
9
8
  import { ServiceIdentity } from './index.js';
9
+ import { StrictClient } from './strict-client.js';
10
10
  export type Flags<T extends typeof Command> = Interfaces.InferredFlags<(typeof BaseCommand)['baseFlags'] & T['flags']>;
11
11
  export type Args<T extends typeof Command> = Interfaces.InferredArgs<T['args']>;
12
12
  export declare abstract class BaseCommand<T extends typeof Command> extends Command {
@@ -34,22 +34,22 @@ export declare abstract class BaseCommand<T extends typeof Command> extends Comm
34
34
  protected configDir(): string;
35
35
  protected catalogIdentity(): Promise<ServiceIdentity>;
36
36
  catalogService(configDir?: string): Promise<{
37
- client: Client<typeof CatalogService>;
37
+ client: StrictClient<typeof CatalogService>;
38
38
  userId: string;
39
39
  organizationId: string;
40
40
  }>;
41
41
  protected searchAgentService(): Promise<{
42
- client: Client<typeof SearchAgentService>;
42
+ client: StrictClient<typeof SearchAgentService>;
43
43
  organizationId: string;
44
44
  userId: string;
45
45
  }>;
46
46
  protected objectService(): Promise<{
47
- client: Client<typeof ObjectService>;
47
+ client: StrictClient<typeof ObjectService>;
48
48
  organizationId: string;
49
49
  userId: string;
50
50
  }>;
51
51
  protected rainbowAuthService(): Promise<{
52
- client: Client<typeof RainbowAuthService>;
52
+ client: StrictClient<typeof RainbowAuthService>;
53
53
  }>;
54
54
  raindropFrameworkVersion(): Promise<string>;
55
55
  log(message?: string, ...args: any[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../src/base-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAGlG,OAAO,EAAE,OAAO,EAAS,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,MAAM,EAA0B,MAAM,aAAa,CAAC;AAC7D,OAAO,EAML,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhF,8BAAsB,WAAW,CAAC,CAAC,SAAS,OAAO,OAAO,CAAE,SAAQ,OAAO;IACzE,MAAM,CAAC,YAAY;;;;;;;MAiCjB;IAEF,MAAM,CAAC,SAAS,KAAM;IACtB,MAAM,CAAC,QAAQ,KAAM;IAErB,SAAS,CAAC,KAAK,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,IAAI,EAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzB,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAErB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;cAclB,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;cAKvD,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrD,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAuB5C,SAAS,CAAC,SAAS,IAAI,MAAM;cAIb,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;IA6BrD,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,MAAM,EAAE,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;cAac,kBAAkB,IAAI,OAAO,CAAC;QAC5C,MAAM,EAAE,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;QAC1C,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;cAYc,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC;QACrC,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;cAiBc,kBAAkB,IAAI,OAAO,CAAC;QAC5C,MAAM,EAAE,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;KAC3C,CAAC;IAMI,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAWjD,GAAG,CAAC,OAAO,GAAE,MAAW,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAGhD"}
1
+ {"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../src/base-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAGlG,OAAO,EAAE,OAAO,EAAS,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,MAAM,EAA0B,MAAM,aAAa,CAAC;AAC7D,OAAO,EAML,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhF,8BAAsB,WAAW,CAAC,CAAC,SAAS,OAAO,OAAO,CAAE,SAAQ,OAAO;IACzE,MAAM,CAAC,YAAY;;;;;;;MAiCjB;IAEF,MAAM,CAAC,SAAS,KAAM;IACtB,MAAM,CAAC,QAAQ,KAAM;IAErB,SAAS,CAAC,KAAK,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,IAAI,EAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzB,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAErB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;cAclB,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;cAKvD,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrD,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAuB5C,SAAS,CAAC,SAAS,IAAI,MAAM;cAIb,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;IA6BrD,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,MAAM,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,CAAC;QAC5C,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;cAac,kBAAkB,IAAI,OAAO,CAAC;QAC5C,MAAM,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;QAChD,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;cAYc,aAAa,IAAI,OAAO,CAAC;QACvC,MAAM,EAAE,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;QAC3C,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;cAiBc,kBAAkB,IAAI,OAAO,CAAC;QAC5C,MAAM,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;KACjD,CAAC;IAMI,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAWjD,GAAG,CAAC,OAAO,GAAE,MAAW,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAGhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../../src/commands/build/branch.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;;MAET;IAEF,MAAM,CAAC,WAAW,SAAmC;IAErD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MA4BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsC3B"}
1
+ {"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../../src/commands/build/branch.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;;MAET;IAEF,MAAM,CAAC,WAAW,SAAmC;IAErD,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MA4BV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkD3B"}
@@ -1,6 +1,6 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../base-command.js';
3
- import { deploy } from '../../deploy.js';
3
+ import { deploy, sandbox } from '../../deploy.js';
4
4
  export default class Branch extends BaseCommand {
5
5
  static args = {
6
6
  branch: Args.string({ description: 'branch name', required: true }),
@@ -72,7 +72,20 @@ Branch a Raindrop application.
72
72
  }
73
73
  // Auto sandbox the new branch
74
74
  this.log('Branching complete, sandboxing the new branch');
75
- await this.config.runCommand('build:sandbox', [updatedConfig.versionId]);
75
+ try {
76
+ await sandbox({
77
+ command: this,
78
+ isSandboxed: true,
79
+ impersonate: this.flags.impersonate,
80
+ versionId: versionId,
81
+ });
82
+ }
83
+ catch (error) {
84
+ if (error instanceof Error) {
85
+ this.error(error.message);
86
+ }
87
+ throw error;
88
+ }
76
89
  this.log(`🔔 Branch is in Sandbox mode`);
77
90
  }
78
91
  }
@@ -0,0 +1,25 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ /**
3
+ * Gets the currently selected organization name or throws an error
4
+ *
5
+ * @param configDir - The configuration directory path
6
+ * @returns The organization name
7
+ * @throws Error if no organization is selected or credentials are missing
8
+ */
9
+ export declare function getSelectedOrganizationName(configDir: string): Promise<string>;
10
+ export default class Clone extends BaseCommand<typeof Clone> {
11
+ static args: {
12
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
13
+ path: import("@oclif/core/interfaces").Arg<string, {
14
+ exists?: boolean;
15
+ }>;
16
+ };
17
+ static description: string;
18
+ static examples: string[];
19
+ static flags: {
20
+ overwrite: import("@oclif/core/interfaces").BooleanFlag<boolean>;
21
+ };
22
+ run(): Promise<void>;
23
+ private initSmartbucketTemplate;
24
+ }
25
+ //# sourceMappingURL=clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/commands/build/clone.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYpF;AAED,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,IAAI;;;;;MAGT;IAEF,MAAM,CAAC,WAAW,SAAoC;IAEtD,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,KAAK;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA6BZ,uBAAuB;CA0FtC"}
@@ -0,0 +1,146 @@
1
+ import { mustManifestFromString } from '@liquidmetal-ai/drizzle/appify/index';
2
+ import { Args, Flags } from '@oclif/core';
3
+ import fs from 'node:fs/promises';
4
+ import * as path from 'node:path';
5
+ import { $, spinner } from 'zx';
6
+ import { BaseCommand } from '../../base-command.js';
7
+ import { codegenPlan, fileExists, renderCodegenPlan } from '../../codegen.js';
8
+ import { getCurrentVersion, readState } from '../../index.js';
9
+ import { confirm } from '@inquirer/prompts';
10
+ /**
11
+ * Gets the currently selected organization name or throws an error
12
+ *
13
+ * @param configDir - The configuration directory path
14
+ * @returns The organization name
15
+ * @throws Error if no organization is selected or credentials are missing
16
+ */
17
+ export async function getSelectedOrganizationName(configDir) {
18
+ const state = await readState(configDir);
19
+ if (!state.currentOrganizationId) {
20
+ throw new Error('Not logged in. Run `raindrop auth login` before deploying.');
21
+ }
22
+ const token = state.organizationIdToBearerToken[state.currentOrganizationId];
23
+ if (!token) {
24
+ throw new Error('No credentials found for current organization. Run `raindrop auth login` again.');
25
+ }
26
+ return token.organizationName;
27
+ }
28
+ export default class Clone extends BaseCommand {
29
+ static args = {
30
+ id: Args.string({ description: 'liquidmetal project ID to clone (e.g., liquidmetal/smartbucket)', required: true }),
31
+ path: Args.directory({ default: '.', description: 'Path to initialize the project in', required: false }),
32
+ };
33
+ static description = 'clone a LiquidMetal.AI project';
34
+ static examples = [
35
+ `<%= config.bin %> <%= command.id %> .
36
+ Clone a project in the current directory.
37
+ `,
38
+ `<%= config.bin %> <%= command.id %> <%= config.path %>
39
+ Clone a project in the specified directory.
40
+ `,
41
+ ];
42
+ static flags = {
43
+ overwrite: Flags.boolean({ description: 'Overwrite existing files', default: false }),
44
+ };
45
+ async run() {
46
+ this.log(`path: ${this.args.path}`);
47
+ // Prepare and destination directory exists
48
+ if (!(await fileExists(this.args.path))) {
49
+ try {
50
+ await fs.mkdir(this.args.path, { recursive: true });
51
+ }
52
+ catch {
53
+ this.error(`Could not create directory ${this.args.path}`, { exit: 1 });
54
+ }
55
+ }
56
+ const pathStat = await fs.lstat(this.args.path);
57
+ if (!pathStat.isDirectory()) {
58
+ this.error(`${this.args.path} is not a directory.`, { exit: 1 });
59
+ }
60
+ // Use package.json to determine if the directory is already initialized
61
+ if (!this.flags.overwrite && (await fileExists(path.join(this.args.path, 'package.json')))) {
62
+ this.error(`A project ${this.args.path} has already been initialized.`, { exit: 1 });
63
+ }
64
+ // Check if the ID is liquidmetal/smartbucket
65
+ if (this.args.id !== 'liquidmetal/smartbucket') {
66
+ this.error(`Unsupported project ID: ${this.args.id}`, { exit: 1 });
67
+ }
68
+ await this.initSmartbucketTemplate();
69
+ }
70
+ async initSmartbucketTemplate() {
71
+ this.log('Initializing liquidmetal/smartbucket project...');
72
+ // Codegen a default configuration
73
+ const apps = await mustManifestFromString('application "hello-world" {}');
74
+ const plan = codegenPlan(apps);
75
+ try {
76
+ await renderCodegenPlan(plan, this.args.path, {
77
+ renderScaffoldingCode: false,
78
+ renderUserModifiableCode: true,
79
+ renderNonUserModifiableCode: true,
80
+ overwrite: false,
81
+ }, {
82
+ applicationName: path.basename(this.args.path),
83
+ raindropFrameworkVersion: await getCurrentVersion(),
84
+ });
85
+ }
86
+ catch (error) {
87
+ this.error(`Could not initialize project at ${this.args.path}: ${error}`, { exit: 1 });
88
+ }
89
+ const projectName = path.basename(this.args.path);
90
+ // Sanitize project name to be filesystem-safe (remove spaces and special characters)
91
+ const sanitizedProjectName = projectName
92
+ .replace(/\s+/g, '-') // Replace all whitespace (spaces, tabs, newlines, etc.) with hyphens
93
+ .replace(/[^a-zA-Z0-9-_]/g, '') // Remove any other non-alphanumeric characters except hyphens and underscores
94
+ .toLowerCase();
95
+ const manifest = `application "${sanitizedProjectName}" {
96
+ service "${sanitizedProjectName}-service" {}
97
+ smartbucket "${sanitizedProjectName}-smartbucket" {}
98
+ }
99
+ `;
100
+ // Overwrite raindrop.manifest
101
+ await fs.writeFile(path.join(this.args.path, 'raindrop.manifest'), manifest);
102
+ await spinner('Installing dependencies...', async () => {
103
+ const $1 = $({ cwd: this.args.path, verbose: true });
104
+ await $1 `npm install`;
105
+ });
106
+ await spinner('Generating code...', async () => {
107
+ const $1 = $({ cwd: this.args.path, verbose: true });
108
+ await $1 `raindrop build generate`;
109
+ });
110
+ await spinner('Validating code...', async () => {
111
+ const $1 = $({ cwd: this.args.path, verbose: true });
112
+ await $1 `raindrop build validate`;
113
+ });
114
+ let orgReady = false;
115
+ while (!orgReady) {
116
+ try {
117
+ const orgName = await getSelectedOrganizationName(this.config.configDir);
118
+ const confirmed = await confirm({
119
+ message: `Using organization: ${orgName}. Is this correct?`,
120
+ });
121
+ if (confirmed) {
122
+ orgReady = true;
123
+ break;
124
+ }
125
+ }
126
+ catch (_) {
127
+ // pass
128
+ }
129
+ await spinner('Logging in...', async () => {
130
+ const $1 = $({ cwd: this.args.path, verbose: true });
131
+ await $1 `raindrop auth login`;
132
+ });
133
+ }
134
+ await spinner('Branching...', async () => {
135
+ const $1 = $({ cwd: this.args.path, verbose: true });
136
+ await $1 `raindrop build branch main`;
137
+ await new Promise((resolve) => setTimeout(resolve, 5000));
138
+ });
139
+ await spinner('Deploying...', async () => {
140
+ const $1 = $({ cwd: this.args.path, verbose: true });
141
+ await $1 `raindrop build deploy --amend`;
142
+ });
143
+ this.log(`Initialized Smartbucket project "${sanitizedProjectName}" in ${this.args.path}`);
144
+ this.log(`To view your application, run:\n cd ${this.args.path}\n raindrop build list`);
145
+ }
146
+ }
@@ -76,7 +76,7 @@ Deleted (application) at version (version)
76
76
  userId,
77
77
  organizationId: this.flags.impersonate ?? organizationId,
78
78
  // Omitting versionId will delete all versions of the application
79
- applications: [{ applicationName: this.args.application, currentVersionId: versionId }],
79
+ applications: [{ applicationName: this.args.application, currentVersionId: versionId || '' }],
80
80
  });
81
81
  // TODO [ian] Failures?
82
82
  // if (resp.failure.length) {
@@ -85,7 +85,7 @@ sets an env var/secret.
85
85
  envs: [
86
86
  {
87
87
  applicationName: valueOf(app.name),
88
- currentVersionId: this.flags.versionId || config.versionId,
88
+ currentVersionId: this.flags.versionId || config.versionId || '',
89
89
  key: this.args.var,
90
90
  },
91
91
  ],
@@ -100,9 +100,9 @@ sets an env var/secret.
100
100
  envs: [
101
101
  {
102
102
  applicationName: valueOf(app.name),
103
- currentVersionId: this.flags.versionId || config.versionId,
103
+ currentVersionId: this.flags.versionId || config.versionId || '',
104
104
  key: this.args.var,
105
- value: secretValue,
105
+ value: secretValue || '',
106
106
  isSecret: isSecret,
107
107
  },
108
108
  ],