@liquidmetal-ai/raindrop 0.6.1 → 0.6.2

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 (51) hide show
  1. package/README.md +59 -421
  2. package/dist/commands/build/deploy.d.ts.map +1 -1
  3. package/dist/commands/build/deploy.js +10 -0
  4. package/dist/commands/mcp/status.d.ts.map +1 -1
  5. package/dist/commands/mcp/status.js +19 -11
  6. package/dist/commands/object/put.d.ts.map +1 -1
  7. package/dist/commands/object/put.js +2 -0
  8. package/dist/tsconfig.tsbuildinfo +1 -1
  9. package/dist/utils/directory-validation.d.ts +8 -0
  10. package/dist/utils/directory-validation.d.ts.map +1 -0
  11. package/dist/utils/directory-validation.js +29 -0
  12. package/oclif.manifest.json +1816 -4016
  13. package/package.json +3 -3
  14. package/templates/db/node_modules/.bin/prisma +2 -2
  15. package/templates/db/node_modules/.bin/prisma-kysely +2 -2
  16. package/templates/db/node_modules/.bin/tsc +2 -2
  17. package/templates/db/node_modules/.bin/tsserver +2 -2
  18. package/templates/db/node_modules/.bin/zx +2 -2
  19. package/dist/commands/dns/create.d.ts +0 -25
  20. package/dist/commands/dns/create.d.ts.map +0 -1
  21. package/dist/commands/dns/create.js +0 -120
  22. package/dist/commands/dns/delete.d.ts +0 -20
  23. package/dist/commands/dns/delete.d.ts.map +0 -1
  24. package/dist/commands/dns/delete.js +0 -59
  25. package/dist/commands/dns/get.d.ts +0 -20
  26. package/dist/commands/dns/get.d.ts.map +0 -1
  27. package/dist/commands/dns/get.js +0 -101
  28. package/dist/commands/dns/list.d.ts +0 -21
  29. package/dist/commands/dns/list.d.ts.map +0 -1
  30. package/dist/commands/dns/list.js +0 -112
  31. package/dist/commands/dns/records/create.d.ts +0 -28
  32. package/dist/commands/dns/records/create.d.ts.map +0 -1
  33. package/dist/commands/dns/records/create.js +0 -140
  34. package/dist/commands/dns/records/delete.d.ts +0 -21
  35. package/dist/commands/dns/records/delete.d.ts.map +0 -1
  36. package/dist/commands/dns/records/delete.js +0 -64
  37. package/dist/commands/dns/records/get.d.ts +0 -21
  38. package/dist/commands/dns/records/get.d.ts.map +0 -1
  39. package/dist/commands/dns/records/get.js +0 -102
  40. package/dist/commands/dns/records/list.d.ts +0 -24
  41. package/dist/commands/dns/records/list.d.ts.map +0 -1
  42. package/dist/commands/dns/records/list.js +0 -132
  43. package/dist/commands/dns/records/update.d.ts +0 -29
  44. package/dist/commands/dns/records/update.d.ts.map +0 -1
  45. package/dist/commands/dns/records/update.js +0 -137
  46. package/dist/commands/log/query.d.ts +0 -27
  47. package/dist/commands/log/query.d.ts.map +0 -1
  48. package/dist/commands/log/query.js +0 -231
  49. package/dist/commands/log/tail.d.ts +0 -22
  50. package/dist/commands/log/tail.d.ts.map +0 -1
  51. package/dist/commands/log/tail.js +0 -214
@@ -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;AAIpD,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"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/build/deploy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,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;CAmD3B"}
@@ -2,6 +2,7 @@ import { Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../base-command.js';
3
3
  import { deploy } from '../../deploy.js';
4
4
  import { watchStatus } from '../../status.js';
5
+ import { validateRaindropDirectory, isDirectoryValidationError } from '../../utils/directory-validation.js';
5
6
  export default class Deploy extends BaseCommand {
6
7
  static args = {};
7
8
  static description = 'deploy a Raindrop application';
@@ -50,6 +51,15 @@ Deploy a Raindrop application version.
50
51
  amend: Flags.boolean({ char: 'a', description: 'amend an existing application', required: false, default: false }),
51
52
  };
52
53
  async run() {
54
+ try {
55
+ await validateRaindropDirectory(this.flags.root, this.flags.manifest);
56
+ }
57
+ catch (error) {
58
+ if (isDirectoryValidationError(error)) {
59
+ this.error(error.message + '\n\nSuggested actions:\n' + error.suggestedActions?.map(action => ` • ${action}`).join('\n'), { exit: 1 });
60
+ }
61
+ throw error;
62
+ }
53
63
  const config = await this.loadConfig();
54
64
  const versionId = this.flags.versionId ?? config.versionId;
55
65
  const unlock = this.flags.lock ?? config.lock ?? 'user';
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAQpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAgF;IAElG,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MAQV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA6EZ,oBAAoB;YAQpB,aAAa;IAmC3B,OAAO,CAAC,YAAY;CAqBrB"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAQpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAgF;IAElG,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MAQV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA6EZ,oBAAoB;YAQpB,aAAa;IAmC3B,OAAO,CAAC,YAAY;CA+BrB"}
@@ -78,7 +78,7 @@ Show current MCP integration status
78
78
  console.log(`\nAll configured MCP servers (${mcpServers.length}):`);
79
79
  for (const server of mcpServers) {
80
80
  const icon = server.name === 'raindrop-mcp' ? '🔵' : '⚪';
81
- console.log(` ${icon} ${server.name} (${server.transport})`);
81
+ console.log(` ${icon} ${server.name} (${server.transport}) - ${server.url}`);
82
82
  }
83
83
  }
84
84
  else {
@@ -133,16 +133,24 @@ Show current MCP integration status
133
133
  const lines = output.split('\n');
134
134
  for (const line of lines) {
135
135
  const trimmed = line.trim();
136
- if (trimmed && !trimmed.startsWith('MCP Servers:') && !trimmed.startsWith('Name')) {
137
- // Parse line format like: "raindrop-mcp http https://raindrop-mcp.example.lmapp.run/mcp"
138
- const parts = trimmed.split(/\s+/);
139
- if (parts.length >= 3 && parts[0] && parts[1]) {
140
- servers.push({
141
- name: parts[0],
142
- transport: parts[1],
143
- url: parts.slice(2).join(' '), // In case URL has spaces
144
- });
145
- }
136
+ // Skip header lines and empty lines
137
+ if (!trimmed ||
138
+ trimmed.startsWith('Checking MCP server health') ||
139
+ trimmed.startsWith('MCP Servers:') ||
140
+ trimmed.startsWith('Name')) {
141
+ continue;
142
+ }
143
+ // Parse format: "server-name: url (TRANSPORT) - status"
144
+ const match = trimmed.match(/^([^:]+):\s+([^\s]+)\s+\(([^)]+)\)/);
145
+ if (match && match[1] && match[2] && match[3]) {
146
+ const name = match[1].trim();
147
+ const url = match[2].trim();
148
+ const transport = match[3].trim().toLowerCase(); // Convert "HTTP" to "http"
149
+ servers.push({
150
+ name,
151
+ url,
152
+ transport,
153
+ });
146
154
  }
147
155
  }
148
156
  return servers;
@@ -1 +1 @@
1
- {"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/commands/object/put.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;;;;MAUT;IAEF,MAAM,CAAC,WAAW,SAAyC;IAE3D,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAoCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD1B,OAAO,CAAC,cAAc;CAavB"}
1
+ {"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/commands/object/put.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;;;;MAUT;IAEF,MAAM,CAAC,WAAW,SAAyC;IAE3D,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;MAoCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD1B,OAAO,CAAC,cAAc;CAevB"}
@@ -116,6 +116,8 @@ Upload myfile.txt to my-bucket with key 'my-key'
116
116
  '.jpg': 'image/jpeg',
117
117
  '.jpeg': 'image/jpeg',
118
118
  '.pdf': 'application/pdf',
119
+ '.mp3': 'audio/mpeg',
120
+ '.wav': 'audio/wav'
119
121
  };
120
122
  return contentTypes[extension] || 'application/octet-stream';
121
123
  }
@@ -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/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"}
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","../src/utils/directory-validation.ts"],"version":"5.8.3"}
@@ -0,0 +1,8 @@
1
+ export declare class DirectoryValidationError extends Error {
2
+ suggestedActions: string[];
3
+ readonly isDirectoryValidationError = true;
4
+ constructor(message: string, suggestedActions?: string[]);
5
+ }
6
+ export declare function validateRaindropDirectory(root: string, manifest?: string): Promise<void>;
7
+ export declare function isDirectoryValidationError(error: unknown): error is DirectoryValidationError;
8
+ //# sourceMappingURL=directory-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-validation.d.ts","sourceRoot":"","sources":["../../src/utils/directory-validation.ts"],"names":[],"mappings":"AAGA,qBAAa,wBAAyB,SAAQ,KAAK;IAGb,gBAAgB,EAAE,MAAM,EAAE;IAF9D,QAAQ,CAAC,0BAA0B,QAAQ;gBAE/B,OAAO,EAAE,MAAM,EAAS,gBAAgB,GAAE,MAAM,EAAO;CAIpE;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAA4B,GACrC,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAE5F"}
@@ -0,0 +1,29 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ export class DirectoryValidationError extends Error {
4
+ suggestedActions;
5
+ isDirectoryValidationError = true;
6
+ constructor(message, suggestedActions = []) {
7
+ super(message);
8
+ this.suggestedActions = suggestedActions;
9
+ this.name = 'DirectoryValidationError';
10
+ }
11
+ }
12
+ export async function validateRaindropDirectory(root, manifest = 'raindrop.manifest') {
13
+ const manifestPath = path.isAbsolute(manifest) ? manifest : path.join(root, manifest);
14
+ try {
15
+ await fs.access(manifestPath, fs.constants.F_OK);
16
+ }
17
+ catch (_error) {
18
+ const relativePath = path.relative(process.cwd(), root);
19
+ const displayPath = relativePath === '' ? 'current directory' : relativePath;
20
+ throw new DirectoryValidationError(`Error: Not in a raindrop directory. No raindrop.manifest found in ${displayPath}.`, [
21
+ 'Check if you are in the correct directory',
22
+ 'Navigate to a raindrop project directory using: cd <project-directory>',
23
+ 'Initialize a new raindrop project using: raindrop build init',
24
+ ]);
25
+ }
26
+ }
27
+ export function isDirectoryValidationError(error) {
28
+ return error instanceof DirectoryValidationError;
29
+ }