@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.
- package/README.md +427 -45
- package/dist/commands/dns/create.d.ts +25 -0
- package/dist/commands/dns/create.d.ts.map +1 -0
- package/dist/commands/dns/create.js +120 -0
- package/dist/commands/dns/delete.d.ts +20 -0
- package/dist/commands/dns/delete.d.ts.map +1 -0
- package/dist/commands/dns/delete.js +59 -0
- package/dist/commands/dns/get.d.ts +20 -0
- package/dist/commands/dns/get.d.ts.map +1 -0
- package/dist/commands/dns/get.js +101 -0
- package/dist/commands/dns/list.d.ts +21 -0
- package/dist/commands/dns/list.d.ts.map +1 -0
- package/dist/commands/dns/list.js +112 -0
- package/dist/commands/dns/records/create.d.ts +28 -0
- package/dist/commands/dns/records/create.d.ts.map +1 -0
- package/dist/commands/dns/records/create.js +140 -0
- package/dist/commands/dns/records/delete.d.ts +21 -0
- package/dist/commands/dns/records/delete.d.ts.map +1 -0
- package/dist/commands/dns/records/delete.js +64 -0
- package/dist/commands/dns/records/get.d.ts +21 -0
- package/dist/commands/dns/records/get.d.ts.map +1 -0
- package/dist/commands/dns/records/get.js +102 -0
- package/dist/commands/dns/records/list.d.ts +24 -0
- package/dist/commands/dns/records/list.d.ts.map +1 -0
- package/dist/commands/dns/records/list.js +132 -0
- package/dist/commands/dns/records/update.d.ts +29 -0
- package/dist/commands/dns/records/update.d.ts.map +1 -0
- package/dist/commands/dns/records/update.js +137 -0
- package/dist/commands/mcp/install-claude.d.ts +22 -0
- package/dist/commands/mcp/install-claude.d.ts.map +1 -0
- package/dist/commands/mcp/install-claude.js +233 -0
- package/dist/commands/mcp/status.d.ts +21 -0
- package/dist/commands/mcp/status.d.ts.map +1 -0
- package/dist/commands/mcp/status.js +150 -0
- package/dist/commands/query/chunk-search.d.ts.map +1 -1
- package/dist/commands/query/chunk-search.js +5 -1
- package/dist/commands/query/document.d.ts.map +1 -1
- package/dist/commands/query/document.js +5 -1
- package/dist/commands/query/reindex.d.ts +21 -0
- package/dist/commands/query/reindex.d.ts.map +1 -0
- package/dist/commands/query/reindex.js +145 -0
- package/dist/commands/query/search.d.ts.map +1 -1
- package/dist/commands/query/search.js +5 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/oclif.manifest.json +3279 -1004
- package/package.json +6 -3
- package/templates/claude-code/new-raindrop-app.md +5 -0
- package/templates/claude-code/raindrop-guidelines.md +127 -0
- package/templates/claude-code/reattach-raindrop-session.md +12 -0
- 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;
|
|
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"}
|