@liquidmetal-ai/raindrop 0.5.2 → 0.6.1

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 (50) hide show
  1. package/README.md +427 -45
  2. package/dist/commands/dns/create.d.ts +25 -0
  3. package/dist/commands/dns/create.d.ts.map +1 -0
  4. package/dist/commands/dns/create.js +120 -0
  5. package/dist/commands/dns/delete.d.ts +20 -0
  6. package/dist/commands/dns/delete.d.ts.map +1 -0
  7. package/dist/commands/dns/delete.js +59 -0
  8. package/dist/commands/dns/get.d.ts +20 -0
  9. package/dist/commands/dns/get.d.ts.map +1 -0
  10. package/dist/commands/dns/get.js +101 -0
  11. package/dist/commands/dns/list.d.ts +21 -0
  12. package/dist/commands/dns/list.d.ts.map +1 -0
  13. package/dist/commands/dns/list.js +112 -0
  14. package/dist/commands/dns/records/create.d.ts +28 -0
  15. package/dist/commands/dns/records/create.d.ts.map +1 -0
  16. package/dist/commands/dns/records/create.js +140 -0
  17. package/dist/commands/dns/records/delete.d.ts +21 -0
  18. package/dist/commands/dns/records/delete.d.ts.map +1 -0
  19. package/dist/commands/dns/records/delete.js +64 -0
  20. package/dist/commands/dns/records/get.d.ts +21 -0
  21. package/dist/commands/dns/records/get.d.ts.map +1 -0
  22. package/dist/commands/dns/records/get.js +102 -0
  23. package/dist/commands/dns/records/list.d.ts +24 -0
  24. package/dist/commands/dns/records/list.d.ts.map +1 -0
  25. package/dist/commands/dns/records/list.js +132 -0
  26. package/dist/commands/dns/records/update.d.ts +29 -0
  27. package/dist/commands/dns/records/update.d.ts.map +1 -0
  28. package/dist/commands/dns/records/update.js +137 -0
  29. package/dist/commands/mcp/install-claude.d.ts +22 -0
  30. package/dist/commands/mcp/install-claude.d.ts.map +1 -0
  31. package/dist/commands/mcp/install-claude.js +233 -0
  32. package/dist/commands/mcp/status.d.ts +21 -0
  33. package/dist/commands/mcp/status.d.ts.map +1 -0
  34. package/dist/commands/mcp/status.js +150 -0
  35. package/dist/commands/query/chunk-search.d.ts.map +1 -1
  36. package/dist/commands/query/chunk-search.js +5 -1
  37. package/dist/commands/query/document.d.ts.map +1 -1
  38. package/dist/commands/query/document.js +5 -1
  39. package/dist/commands/query/reindex.d.ts +21 -0
  40. package/dist/commands/query/reindex.d.ts.map +1 -0
  41. package/dist/commands/query/reindex.js +145 -0
  42. package/dist/commands/query/search.d.ts.map +1 -1
  43. package/dist/commands/query/search.js +5 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/oclif.manifest.json +3279 -1004
  46. package/package.json +6 -3
  47. package/templates/claude-code/new-raindrop-app.md +5 -0
  48. package/templates/claude-code/raindrop-guidelines.md +127 -0
  49. package/templates/claude-code/reattach-raindrop-session.md +12 -0
  50. package/templates/claude-code/update-raindrop-app.md +11 -0
@@ -0,0 +1,145 @@
1
+ import { Flags } from '@oclif/core';
2
+ import * as fs from 'node:fs/promises';
3
+ import * as os from 'node:os';
4
+ import * as path from 'path';
5
+ import { BaseCommand } from '../../base-command.js';
6
+ export default class QueryReindex extends BaseCommand {
7
+ static description = 'Reindex all objects in a bucket by downloading and re-uploading them';
8
+ static examples = [
9
+ `<%= config.bin %> query reindex -b my-bucket
10
+ Reindex all objects in my-bucket by downloading and re-uploading them
11
+ `,
12
+ `<%= config.bin %> query reindex -b my-bucket --parallel 5
13
+ Reindex objects with 5 parallel operations instead of the default 10
14
+ `,
15
+ ];
16
+ static flags = {
17
+ ...BaseCommand.HIDDEN_FLAGS,
18
+ bucket: Flags.string({
19
+ char: 'b',
20
+ description: 'bucket name version can be specified with #, e.g. my-bucket#versionId',
21
+ required: true,
22
+ }),
23
+ parallel: Flags.integer({
24
+ char: 'p',
25
+ description: 'number of parallel operations',
26
+ default: 10,
27
+ }),
28
+ dryRun: Flags.boolean({
29
+ char: 'd',
30
+ description: 'show what would be reindexed without actually doing it',
31
+ default: false,
32
+ }),
33
+ impersonate: Flags.string({
34
+ char: 'i',
35
+ description: 'impersonate organization',
36
+ required: false,
37
+ hidden: true,
38
+ }),
39
+ manifest: Flags.string({
40
+ char: 'M',
41
+ description: 'project manifest',
42
+ required: false,
43
+ default: 'raindrop.manifest',
44
+ hidden: true,
45
+ }),
46
+ };
47
+ async run() {
48
+ if (this.flags.bucket && !this.flags.bucket.includes('#')) {
49
+ await this.loadConfig();
50
+ }
51
+ const bucketLocation = {
52
+ bucketLocation: {
53
+ case: 'bucket',
54
+ value: {
55
+ name: this.flags.bucket.split('#')[0],
56
+ version: this.flags.bucket.includes('#') ? this.flags.bucket.split('#')[1] : this.raindropConfig?.versionId,
57
+ },
58
+ },
59
+ };
60
+ const { client: objectService, userId, organizationId } = await this.objectService();
61
+ // Get list of objects
62
+ console.log(`Fetching object list from bucket: ${this.flags.bucket}`);
63
+ const listResponse = await objectService.listObjects({
64
+ userId,
65
+ organizationId,
66
+ bucketLocation,
67
+ });
68
+ if (!listResponse.objects || listResponse.objects.length === 0) {
69
+ console.log('No objects found in bucket');
70
+ return;
71
+ }
72
+ console.log(`Found ${listResponse.objects.length} objects to reindex`);
73
+ if (this.flags.dryRun) {
74
+ console.log('\nDry run - would reindex the following objects:');
75
+ for (const obj of listResponse.objects) {
76
+ console.log(` - ${obj.key}`);
77
+ }
78
+ return;
79
+ }
80
+ // Create temporary directory
81
+ const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'raindrop-reindex-'));
82
+ try {
83
+ // Process objects in batches
84
+ const batchSize = this.flags.parallel;
85
+ let processed = 0;
86
+ let failed = 0;
87
+ for (let i = 0; i < listResponse.objects.length; i += batchSize) {
88
+ const batch = listResponse.objects.slice(i, i + batchSize);
89
+ const promises = batch.map(async (obj) => {
90
+ try {
91
+ console.log(`Processing: ${obj.key}`);
92
+ // Download object
93
+ const getResponse = await objectService.getObject({
94
+ userId,
95
+ organizationId,
96
+ key: obj.key,
97
+ bucketLocation,
98
+ });
99
+ if (!getResponse.content) {
100
+ throw new Error('No content received');
101
+ }
102
+ // Write to temporary file
103
+ const tempFile = path.join(tempDir, `${Date.now()}-${Math.random()}`);
104
+ await fs.writeFile(tempFile, getResponse.content);
105
+ // Re-upload object
106
+ const fileContent = await fs.readFile(tempFile);
107
+ await objectService.putObject({
108
+ userId,
109
+ organizationId,
110
+ key: obj.key,
111
+ content: fileContent,
112
+ contentType: getResponse.contentType || 'application/octet-stream',
113
+ bucketLocation,
114
+ });
115
+ // Clean up temp file
116
+ await fs.unlink(tempFile);
117
+ console.log(`Completed: ${obj.key}`);
118
+ return true;
119
+ }
120
+ catch (error) {
121
+ console.error(`Failed: ${obj.key} - ${error instanceof Error ? error.message : String(error)}`);
122
+ return false;
123
+ }
124
+ });
125
+ const results = await Promise.all(promises);
126
+ processed += results.filter(Boolean).length;
127
+ failed += results.filter(r => !r).length;
128
+ console.log(`Batch ${Math.floor(i / batchSize) + 1} completed. Progress: ${processed + failed}/${listResponse.objects.length}`);
129
+ }
130
+ console.log('\nReindexing completed:');
131
+ console.log(` Successfully processed: ${processed}`);
132
+ console.log(` Failed: ${failed}`);
133
+ console.log(` Total: ${listResponse.objects.length}`);
134
+ }
135
+ finally {
136
+ // Clean up temp directory
137
+ try {
138
+ await fs.rm(tempDir, { recursive: true });
139
+ }
140
+ catch (_error) {
141
+ console.warn(`Warning: Could not clean up temp directory ${tempDir}`);
142
+ }
143
+ }
144
+ }
145
+ }
@@ -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;;;;;;;;;;;;;;;MA0CV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsG3B"}
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;;;;;;;;;;;;;;;MA0CV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4G3B"}
@@ -65,6 +65,10 @@ Get page 2 of previous search results.
65
65
  if (this.flags.buckets?.length && this.flags.moduleIds?.length) {
66
66
  this.error('Cannot specify both --buckets and --moduleIds flags. Please use only one type of filter.');
67
67
  }
68
+ // Load config if any bucket doesn't have a version specified
69
+ if (this.flags.buckets?.some(bucket => !bucket.includes('#'))) {
70
+ await this.loadConfig();
71
+ }
68
72
  const { args, flags } = await this.parse(AgentSearch);
69
73
  const { client: searchAgentService, userId, organizationId } = await this.searchAgentService();
70
74
  let response;
@@ -107,7 +111,7 @@ Get page 2 of previous search results.
107
111
  case: 'bucket',
108
112
  value: {
109
113
  name: bucketName,
110
- version: version || '',
114
+ version: version || this.raindropConfig?.versionId || '',
111
115
  },
112
116
  },
113
117
  };
@@ -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/log-helpers.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/logs/query.ts","../src/commands/logs/tail.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/log-helpers.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/logs/query.ts","../src/commands/logs/tail.ts","../src/commands/mcp/install-claude.ts","../src/commands/mcp/status.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/reindex.ts","../src/commands/query/search.ts"],"version":"5.8.3"}