@liquidmetal-ai/raindrop 0.2.8 → 0.2.10

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 (72) hide show
  1. package/README.md +1 -776
  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/build.js +1 -1
  6. package/dist/codegen.d.ts +9 -2
  7. package/dist/codegen.d.ts.map +1 -1
  8. package/dist/codegen.js +93 -16
  9. package/dist/codegen.test.js +21 -0
  10. package/dist/commands/auth/login.d.ts.map +1 -1
  11. package/dist/commands/build/branch.d.ts.map +1 -1
  12. package/dist/commands/build/branch.js +16 -1
  13. package/dist/commands/build/checkout.d.ts.map +1 -1
  14. package/dist/commands/build/checkout.js +4 -1
  15. package/dist/commands/build/delete.js +2 -2
  16. package/dist/commands/build/deploy.d.ts.map +1 -1
  17. package/dist/commands/build/deploy.js +9 -3
  18. package/dist/commands/build/find.d.ts.map +1 -1
  19. package/dist/commands/build/find.js +3 -1
  20. package/dist/commands/build/generate.d.ts.map +1 -1
  21. package/dist/commands/build/generate.js +1 -0
  22. package/dist/commands/build/init.js +1 -1
  23. package/dist/commands/build/list.d.ts.map +1 -1
  24. package/dist/commands/build/list.js +6 -4
  25. package/dist/commands/build/sandbox.d.ts.map +1 -1
  26. package/dist/commands/build/sandbox.js +8 -2
  27. package/dist/commands/build/start.d.ts.map +1 -1
  28. package/dist/commands/build/start.js +5 -2
  29. package/dist/commands/build/status.d.ts.map +1 -1
  30. package/dist/commands/build/status.js +5 -4
  31. package/dist/commands/build/stop.d.ts.map +1 -1
  32. package/dist/commands/build/stop.js +5 -2
  33. package/dist/commands/build/unsandbox.d.ts.map +1 -1
  34. package/dist/commands/build/unsandbox.js +8 -2
  35. package/dist/commands/build/validate.js +3 -3
  36. package/dist/commands/object/delete.d.ts.map +1 -1
  37. package/dist/commands/object/delete.js +8 -4
  38. package/dist/commands/object/get.d.ts.map +1 -1
  39. package/dist/commands/object/get.js +8 -6
  40. package/dist/commands/object/list.d.ts.map +1 -1
  41. package/dist/commands/object/list.js +14 -10
  42. package/dist/commands/object/put.d.ts.map +1 -1
  43. package/dist/commands/object/put.js +11 -7
  44. package/dist/commands/query/chunk-search.d.ts.map +1 -1
  45. package/dist/commands/query/chunk-search.js +11 -9
  46. package/dist/commands/query/register-retriever.d.ts.map +1 -1
  47. package/dist/commands/query/register-retriever.js +2 -7
  48. package/dist/commands/query/search.d.ts.map +1 -1
  49. package/dist/commands/query/search.js +15 -15
  50. package/dist/config.d.ts +3 -0
  51. package/dist/config.d.ts.map +1 -1
  52. package/dist/config.js +2 -0
  53. package/dist/config.test.js +3 -0
  54. package/dist/deploy.d.ts.map +1 -1
  55. package/dist/deploy.js +0 -1
  56. package/dist/index.d.ts +2 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +18 -2
  59. package/dist/trace.d.ts +20 -0
  60. package/dist/trace.d.ts.map +1 -0
  61. package/dist/trace.js +117 -0
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/oclif.manifest.json +2 -4827
  64. package/package.json +1 -1
  65. package/templates/db/common/kysely-d1.ts +173 -0
  66. package/templates/db/db/README.md +32 -0
  67. package/templates/db/package.json +19 -0
  68. package/templates/db/prisma/schema.prisma.hbs +46 -0
  69. package/templates/db/scripts/create_migration.mts +78 -0
  70. package/templates/db/scripts/seed-sql.mts +32 -0
  71. package/templates/db/scripts/seed.ts.hbs +219 -0
  72. package/templates/init/package.json.hbs +1 -1
package/dist/trace.js ADDED
@@ -0,0 +1,117 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ // Helper functions for traceparent
3
+ function randomHex(length) {
4
+ return [...Array(length)].map(() => Math.floor(Math.random() * 16).toString(16)).join('');
5
+ }
6
+ function generateTraceId() {
7
+ return randomHex(32);
8
+ }
9
+ function generateParentId() {
10
+ return randomHex(16);
11
+ }
12
+ // Create a traceparent header following W3C spec:
13
+ // version-format = trace-id "-" parent-id "-" trace-flags
14
+ // https://www.w3.org/TR/trace-context/#version-format
15
+ function createTraceparent(traceId = null, parentId = null, sampled = false) {
16
+ const version = '00';
17
+ const finalTraceId = traceId || generateTraceId();
18
+ const finalParentId = parentId || generateParentId();
19
+ const traceFlags = sampled ? '01' : '00';
20
+ return `${version}-${finalTraceId}-${finalParentId}-${traceFlags}`;
21
+ }
22
+ // Parse traceparent
23
+ function parseTraceparent(traceparent) {
24
+ if (!traceparent)
25
+ return null;
26
+ const parts = traceparent.split('-');
27
+ if (parts.length !== 4)
28
+ return null;
29
+ // Ensure all parts exist before creating the object
30
+ if (!parts[0] || !parts[1] || !parts[2] || !parts[3])
31
+ return null;
32
+ return {
33
+ version: parts[0],
34
+ traceId: parts[1],
35
+ parentId: parts[2],
36
+ traceFlags: parts[3],
37
+ };
38
+ }
39
+ // Simple Trace store using AsyncLocalStorage for context propagation
40
+ export class TraceStore {
41
+ asyncLocalStorage;
42
+ constructor() {
43
+ this.asyncLocalStorage = new AsyncLocalStorage();
44
+ }
45
+ // Get current traceparent from AsyncLocalStorage
46
+ getCurrentTraceparent() {
47
+ return this.asyncLocalStorage.getStore();
48
+ }
49
+ // Get or create a traceparent
50
+ getOrCreateTraceparent(incomingTraceparent) {
51
+ const current = this.getCurrentTraceparent();
52
+ // If we have a current one, return it
53
+ if (current) {
54
+ return current;
55
+ }
56
+ // If we're given a parent, create a child with a new parentId
57
+ if (incomingTraceparent) {
58
+ const parsed = parseTraceparent(incomingTraceparent);
59
+ if (parsed) {
60
+ // Use the trace ID from the incoming traceparent, but generate a new parent ID
61
+ return createTraceparent(parsed.traceId, generateParentId());
62
+ }
63
+ }
64
+ // Otherwise create a brand new one
65
+ return createTraceparent();
66
+ }
67
+ // Run a function within the context of a trace
68
+ run(traceparent, fn) {
69
+ const activeTraceparent = traceparent || this.getOrCreateTraceparent();
70
+ return this.asyncLocalStorage.run(activeTraceparent, fn);
71
+ }
72
+ }
73
+ // Create and export a default trace store instance
74
+ export const traceStore = new TraceStore();
75
+ // Convenience function to access current traceparent
76
+ export function getCurrentTraceparent() {
77
+ return traceStore.getCurrentTraceparent();
78
+ }
79
+ // Convenience function to run with current or new traceparent
80
+ export function runWithTrace(fn, traceparent) {
81
+ return traceStore.run(traceparent, fn);
82
+ }
83
+ /**
84
+ * Generates a URL for viewing a trace based on a configured template
85
+ *
86
+ * @param traceparent - W3C traceparent header value (format: 00-{traceId}-{spanId}-{flags})
87
+ * @param startTime - Optional trace start time (defaults to now minus 15 minutes)
88
+ * @param endTime - Optional trace end time (defaults to now plus 15 minutes)
89
+ * @returns Trace URL based on the configured template, or null if no template is configured
90
+ */
91
+ export function generateTraceUrl(traceparent, startTime, endTime) {
92
+ // Check if trace URL template is configured
93
+ const encodedTemplate = process.env.RAINDROP_TRACE_URL_TEMPLATE;
94
+ if (!encodedTemplate) {
95
+ return null;
96
+ }
97
+ // Decode the URL-encoded template
98
+ const urlTemplate = decodeURIComponent(encodedTemplate);
99
+ const parsed = parseTraceparent(traceparent);
100
+ if (!parsed) {
101
+ throw new Error(`Invalid traceparent format: ${traceparent}`);
102
+ }
103
+ const traceId = parsed.traceId;
104
+ const spanId = parsed.parentId;
105
+ // Default time range if not provided is ±15 minutes from now
106
+ const start = startTime || new Date(Date.now() - 15 * 60 * 1000);
107
+ const end = endTime || new Date(Date.now() + 15 * 60 * 1000);
108
+ // Format timestamps for URL template (Unix timestamp in seconds)
109
+ const startTs = Math.floor(start.getTime() / 1000);
110
+ const endTs = Math.floor(end.getTime() / 1000);
111
+ // Replace placeholders in the template
112
+ return urlTemplate
113
+ .replace(/\{traceId\}/g, traceId)
114
+ .replace(/\{spanId\}/g, spanId)
115
+ .replace(/\{startTs\}/g, startTs.toString())
116
+ .replace(/\{endTs\}/g, endTs.toString());
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/commands/tail.ts","../src/commands/auth/list.ts","../src/commands/auth/login.ts","../src/commands/auth/logout.ts","../src/commands/auth/select.ts","../src/commands/build/branch.ts","../src/commands/build/checkout.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/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/register-retriever.ts","../src/commands/query/search.ts"],"version":"5.8.2"}
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/trace.ts","../src/commands/tail.ts","../src/commands/auth/list.ts","../src/commands/auth/login.ts","../src/commands/auth/logout.ts","../src/commands/auth/select.ts","../src/commands/build/branch.ts","../src/commands/build/checkout.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/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/register-retriever.ts","../src/commands/query/search.ts"],"version":"5.8.2"}