@farazirfan/costar-server-executor 1.7.55 → 1.7.57
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/dist/db/local-database.d.ts +11 -0
- package/dist/db/local-database.d.ts.map +1 -1
- package/dist/db/local-database.js +13 -0
- package/dist/db/local-database.js.map +1 -1
- package/dist/routes/db-ops.js +24 -24
- package/dist/routes/db-ops.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/dist/startup/migrate.d.ts +54 -0
- package/dist/startup/migrate.d.ts.map +1 -0
- package/dist/startup/migrate.js +385 -0
- package/dist/startup/migrate.js.map +1 -0
- package/package.json +1 -1
- package/public/index.html +607 -2
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup Migrations — One-time data migration on server start
|
|
3
|
+
*
|
|
4
|
+
* Follows OpenClaw's "detect on load, migrate if needed, idempotent" pattern.
|
|
5
|
+
* Each migration checks its own precondition (e.g., local store empty)
|
|
6
|
+
* so it's safe to run every startup without a version tracker.
|
|
7
|
+
*/
|
|
8
|
+
import crypto from "node:crypto";
|
|
9
|
+
import * as localCronStore from "../cron/local-store.js";
|
|
10
|
+
import { getAllCronJobs } from "../supabase/cron-jobs.js";
|
|
11
|
+
import { getSupabase, isSupabaseInitialized } from "../supabase/client.js";
|
|
12
|
+
import { writeGlobalEnv } from "../cli/env-loader.js";
|
|
13
|
+
import { isDatabaseReady, getRawDatabase, getRecentActivity } from "../db/local-database.js";
|
|
14
|
+
// ═══════════════════════════════════════════════════════
|
|
15
|
+
// CRON MIGRATION: Supabase → Local JSON
|
|
16
|
+
// ═══════════════════════════════════════════════════════
|
|
17
|
+
/** Normalize Supabase status to local store status */
|
|
18
|
+
function normalizeStatus(status) {
|
|
19
|
+
switch (status) {
|
|
20
|
+
case "active": return "active";
|
|
21
|
+
case "paused": return "paused";
|
|
22
|
+
case "completed": return "completed";
|
|
23
|
+
case "error": return "error";
|
|
24
|
+
case "failed": return "error"; // Supabase "failed" → local "error"
|
|
25
|
+
case "disabled": return "paused"; // Supabase "disabled" → local "paused"
|
|
26
|
+
default: return "active";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Migrate cron jobs from Supabase to local JSON store.
|
|
31
|
+
*
|
|
32
|
+
* Precondition: local store has zero jobs for this user.
|
|
33
|
+
* If Supabase has jobs, copies them to the local store.
|
|
34
|
+
* Naturally idempotent — once local store has jobs, this is a no-op.
|
|
35
|
+
*/
|
|
36
|
+
export async function migrateCronJobsFromSupabase(userId) {
|
|
37
|
+
try {
|
|
38
|
+
// Check local store first (fast path)
|
|
39
|
+
const localJobs = localCronStore.getAllJobs(userId);
|
|
40
|
+
if (localJobs.length > 0) {
|
|
41
|
+
console.log(`[MIGRATE] Cron: local store already has ${localJobs.length} jobs — skipping`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// Check if Supabase is available
|
|
45
|
+
if (!isSupabaseInitialized()) {
|
|
46
|
+
console.log("[MIGRATE] Cron: Supabase not initialized — skipping migration");
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Fetch from Supabase (include disabled jobs — migrate everything)
|
|
50
|
+
console.log("[MIGRATE] Cron: local store empty, checking Supabase...");
|
|
51
|
+
const supabaseJobs = await getAllCronJobs(userId, true);
|
|
52
|
+
if (supabaseJobs.length === 0) {
|
|
53
|
+
console.log("[MIGRATE] Cron: no jobs in Supabase either — nothing to migrate");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Map Supabase format → local format and save
|
|
57
|
+
const store = localCronStore.loadJobs();
|
|
58
|
+
for (const sj of supabaseJobs) {
|
|
59
|
+
store.jobs.push({
|
|
60
|
+
id: sj.id,
|
|
61
|
+
user_id: sj.user_id,
|
|
62
|
+
name: sj.name || "Unnamed job",
|
|
63
|
+
instruction: sj.instruction || "",
|
|
64
|
+
enabled: sj.enabled !== false,
|
|
65
|
+
schedule_type: sj.schedule_type || "cron",
|
|
66
|
+
cron_expression: sj.cron_expression || undefined,
|
|
67
|
+
schedule_value: sj.schedule_value || undefined,
|
|
68
|
+
schedule_at: sj.schedule_at ? String(sj.schedule_at) : undefined,
|
|
69
|
+
timezone: sj.timezone || undefined,
|
|
70
|
+
delete_after_run: sj.delete_after_run || false,
|
|
71
|
+
status: normalizeStatus(sj.status),
|
|
72
|
+
next_run_at: sj.next_run_at || undefined,
|
|
73
|
+
retry_count: sj.retry_count || 0,
|
|
74
|
+
max_retries: sj.max_retries || 3,
|
|
75
|
+
created_at: sj.created_at || new Date().toISOString(),
|
|
76
|
+
updated_at: sj.updated_at || new Date().toISOString(),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
localCronStore.saveJobs(store);
|
|
80
|
+
console.log(`[MIGRATE] Cron: migrated ${supabaseJobs.length} jobs from Supabase → local store`);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
// Non-fatal — server can operate without migrated cron jobs
|
|
84
|
+
console.error("[MIGRATE] Cron migration failed (non-fatal):", err);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// ═══════════════════════════════════════════════════════
|
|
88
|
+
// CLIENT API TOKEN: Auto-generate + persist
|
|
89
|
+
// ═══════════════════════════════════════════════════════
|
|
90
|
+
/**
|
|
91
|
+
* Ensure CLIENT_API_TOKEN exists.
|
|
92
|
+
*
|
|
93
|
+
* If missing from env, generates a random 48-char hex token (192 bits),
|
|
94
|
+
* writes it to ~/.costar/.env, and sets it in process.env for this run.
|
|
95
|
+
* Also updates user_sandboxes metadata in Supabase so Flutter client can read it.
|
|
96
|
+
*
|
|
97
|
+
* Follows OpenClaw's ensureGatewayStartupAuth pattern.
|
|
98
|
+
*/
|
|
99
|
+
export async function ensureClientApiToken(userId) {
|
|
100
|
+
const existing = process.env.CLIENT_API_TOKEN;
|
|
101
|
+
if (existing) {
|
|
102
|
+
console.log("[MIGRATE] CLIENT_API_TOKEN: already set");
|
|
103
|
+
return existing;
|
|
104
|
+
}
|
|
105
|
+
// Generate new token (OpenClaw pattern: crypto.randomBytes)
|
|
106
|
+
const token = crypto.randomBytes(24).toString("hex");
|
|
107
|
+
console.log(`[MIGRATE] CLIENT_API_TOKEN: generated new token (${token.slice(0, 8)}...)`);
|
|
108
|
+
// Persist to .env
|
|
109
|
+
writeGlobalEnv({ CLIENT_API_TOKEN: token });
|
|
110
|
+
process.env.CLIENT_API_TOKEN = token;
|
|
111
|
+
console.log("[MIGRATE] CLIENT_API_TOKEN: persisted to ~/.costar/.env");
|
|
112
|
+
// Update Supabase user_sandboxes metadata so Flutter client can read the token
|
|
113
|
+
await persistTokenToSupabase(userId, token);
|
|
114
|
+
return token;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Update user_sandboxes.metadata with client_api_token.
|
|
118
|
+
* Best-effort — if Supabase is unavailable or table doesn't exist, we skip.
|
|
119
|
+
*/
|
|
120
|
+
async function persistTokenToSupabase(userId, token) {
|
|
121
|
+
try {
|
|
122
|
+
if (!isSupabaseInitialized()) {
|
|
123
|
+
console.log("[MIGRATE] CLIENT_API_TOKEN: Supabase not ready — skipping metadata update");
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const supabase = getSupabase();
|
|
127
|
+
const sandboxId = process.env.SANDBOX_ID;
|
|
128
|
+
if (!sandboxId) {
|
|
129
|
+
console.log("[MIGRATE] CLIENT_API_TOKEN: no SANDBOX_ID — skipping Supabase metadata update");
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
// Read current metadata
|
|
133
|
+
const { data: row, error: readErr } = await supabase
|
|
134
|
+
.from("user_sandboxes")
|
|
135
|
+
.select("metadata")
|
|
136
|
+
.eq("user_id", userId)
|
|
137
|
+
.eq("sandbox_id", sandboxId)
|
|
138
|
+
.maybeSingle();
|
|
139
|
+
if (readErr) {
|
|
140
|
+
console.warn("[MIGRATE] CLIENT_API_TOKEN: error reading user_sandboxes:", readErr.message);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (!row) {
|
|
144
|
+
console.warn("[MIGRATE] CLIENT_API_TOKEN: no sandbox record found for user");
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
// Merge token into existing metadata
|
|
148
|
+
const currentMeta = (typeof row.metadata === "string"
|
|
149
|
+
? JSON.parse(row.metadata)
|
|
150
|
+
: row.metadata) || {};
|
|
151
|
+
const updatedMeta = { ...currentMeta, client_api_token: token };
|
|
152
|
+
const { error: writeErr } = await supabase
|
|
153
|
+
.from("user_sandboxes")
|
|
154
|
+
.update({ metadata: updatedMeta })
|
|
155
|
+
.eq("user_id", userId)
|
|
156
|
+
.eq("sandbox_id", sandboxId);
|
|
157
|
+
if (writeErr) {
|
|
158
|
+
console.warn("[MIGRATE] CLIENT_API_TOKEN: error updating metadata:", writeErr.message);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
console.log("[MIGRATE] CLIENT_API_TOKEN: persisted to Supabase user_sandboxes metadata");
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
console.warn("[MIGRATE] CLIENT_API_TOKEN: Supabase update failed (non-fatal):", err);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// ═══════════════════════════════════════════════════════
|
|
168
|
+
// ACTIVITY MIGRATION: Supabase → Local SQLite
|
|
169
|
+
// ═══════════════════════════════════════════════════════
|
|
170
|
+
/**
|
|
171
|
+
* Migrate agent_activity records from Supabase to local SQLite.
|
|
172
|
+
*
|
|
173
|
+
* Precondition: local SQLite has zero activity records for this user.
|
|
174
|
+
* Fetches all records from Supabase in pages of 500, inserts into local DB.
|
|
175
|
+
* Naturally idempotent — once local DB has records, this is a no-op.
|
|
176
|
+
*/
|
|
177
|
+
export async function migrateActivityFromSupabase(userId) {
|
|
178
|
+
try {
|
|
179
|
+
// Check if DB is ready
|
|
180
|
+
if (!isDatabaseReady()) {
|
|
181
|
+
console.log("[MIGRATE] Activity: database not initialized — skipping");
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// Check local DB first (fast path)
|
|
185
|
+
const localActivities = getRecentActivity(userId, 1);
|
|
186
|
+
if (localActivities.length > 0) {
|
|
187
|
+
console.log("[MIGRATE] Activity: local DB already has records — skipping");
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// Check if Supabase is available
|
|
191
|
+
if (!isSupabaseInitialized()) {
|
|
192
|
+
console.log("[MIGRATE] Activity: Supabase not initialized — skipping");
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
console.log("[MIGRATE] Activity: local DB empty, fetching from Supabase...");
|
|
196
|
+
const supabase = getSupabase();
|
|
197
|
+
const db = getRawDatabase();
|
|
198
|
+
if (!db)
|
|
199
|
+
return;
|
|
200
|
+
// Fetch all records in pages
|
|
201
|
+
const PAGE_SIZE = 500;
|
|
202
|
+
let offset = 0;
|
|
203
|
+
let totalMigrated = 0;
|
|
204
|
+
// Prepare insert statement (reusable for performance)
|
|
205
|
+
const insertStmt = db.prepare(`
|
|
206
|
+
INSERT OR IGNORE INTO agent_activity
|
|
207
|
+
(id, user_id, request, response, status, executor, source, tool_calls, duration, error, keywords, categories, sandbox_id, created_at, updated_at)
|
|
208
|
+
VALUES
|
|
209
|
+
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
210
|
+
`);
|
|
211
|
+
// Use a transaction for bulk inserts (much faster)
|
|
212
|
+
const insertBatch = db.transaction((rows) => {
|
|
213
|
+
for (const r of rows) {
|
|
214
|
+
insertStmt.run(r.id, r.user_id, r.request ?? null, r.response ?? null, r.status ?? "pending", r.executor ?? "server", r.source ?? null, r.tool_calls ?? 0, r.duration ?? null, r.error ?? null, r.keywords ?? null, r.categories ? JSON.stringify(r.categories) : null, r.sandbox_id ?? null, r.created_at ?? new Date().toISOString(), r.updated_at ?? new Date().toISOString());
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
while (true) {
|
|
218
|
+
const { data, error } = await supabase
|
|
219
|
+
.from("agent_activity")
|
|
220
|
+
.select("*")
|
|
221
|
+
.eq("user_id", userId)
|
|
222
|
+
.order("created_at", { ascending: true })
|
|
223
|
+
.range(offset, offset + PAGE_SIZE - 1);
|
|
224
|
+
if (error) {
|
|
225
|
+
console.error("[MIGRATE] Activity: Supabase fetch error:", error.message);
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
if (!data || data.length === 0)
|
|
229
|
+
break;
|
|
230
|
+
insertBatch(data);
|
|
231
|
+
totalMigrated += data.length;
|
|
232
|
+
console.log(`[MIGRATE] Activity: migrated ${totalMigrated} records so far...`);
|
|
233
|
+
if (data.length < PAGE_SIZE)
|
|
234
|
+
break;
|
|
235
|
+
offset += PAGE_SIZE;
|
|
236
|
+
}
|
|
237
|
+
if (totalMigrated > 0) {
|
|
238
|
+
console.log(`[MIGRATE] Activity: migrated ${totalMigrated} records from Supabase → local SQLite`);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
console.log("[MIGRATE] Activity: no records in Supabase — nothing to migrate");
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
console.error("[MIGRATE] Activity migration failed (non-fatal):", err);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// ═══════════════════════════════════════════════════════
|
|
249
|
+
// PROJECTS MIGRATION: Supabase → Local SQLite
|
|
250
|
+
// ═══════════════════════════════════════════════════════
|
|
251
|
+
/**
|
|
252
|
+
* Migrate projects from Supabase to local SQLite.
|
|
253
|
+
*
|
|
254
|
+
* Precondition: local SQLite has zero project records for this user.
|
|
255
|
+
* Naturally idempotent.
|
|
256
|
+
*/
|
|
257
|
+
export async function migrateProjectsFromSupabase(userId) {
|
|
258
|
+
try {
|
|
259
|
+
if (!isDatabaseReady()) {
|
|
260
|
+
console.log("[MIGRATE] Projects: database not initialized — skipping");
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const db = getRawDatabase();
|
|
264
|
+
if (!db)
|
|
265
|
+
return;
|
|
266
|
+
// Check local DB first
|
|
267
|
+
const localCount = db.prepare("SELECT COUNT(*) as cnt FROM projects WHERE user_id = ?").get(userId);
|
|
268
|
+
if (localCount && localCount.cnt > 0) {
|
|
269
|
+
console.log(`[MIGRATE] Projects: local DB already has ${localCount.cnt} records — skipping`);
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
if (!isSupabaseInitialized()) {
|
|
273
|
+
console.log("[MIGRATE] Projects: Supabase not initialized — skipping");
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
console.log("[MIGRATE] Projects: local DB empty, fetching from Supabase...");
|
|
277
|
+
const supabase = getSupabase();
|
|
278
|
+
const { data, error } = await supabase
|
|
279
|
+
.from("projects")
|
|
280
|
+
.select("*")
|
|
281
|
+
.eq("user_id", userId);
|
|
282
|
+
if (error) {
|
|
283
|
+
console.error("[MIGRATE] Projects: Supabase fetch error:", error.message);
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
if (!data || data.length === 0) {
|
|
287
|
+
console.log("[MIGRATE] Projects: no records in Supabase — nothing to migrate");
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const insertStmt = db.prepare(`
|
|
291
|
+
INSERT OR IGNORE INTO projects
|
|
292
|
+
(id, user_id, name, description, sandbox_id, project_path, convo_summary, is_active, created_at, updated_at)
|
|
293
|
+
VALUES
|
|
294
|
+
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
295
|
+
`);
|
|
296
|
+
const insertBatch = db.transaction((rows) => {
|
|
297
|
+
for (const r of rows) {
|
|
298
|
+
insertStmt.run(r.id, r.user_id, r.name ?? null, r.description ?? null, r.sandbox_id ?? null, r.project_path ?? null, r.convo_summary ?? null, r.is_active ? 1 : 0, r.created_at ?? new Date().toISOString(), r.updated_at ?? new Date().toISOString());
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
insertBatch(data);
|
|
302
|
+
console.log(`[MIGRATE] Projects: migrated ${data.length} records from Supabase → local SQLite`);
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
console.error("[MIGRATE] Projects migration failed (non-fatal):", err);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// ═══════════════════════════════════════════════════════
|
|
309
|
+
// ASSETS MIGRATION: Supabase → Local SQLite
|
|
310
|
+
// ═══════════════════════════════════════════════════════
|
|
311
|
+
/**
|
|
312
|
+
* Migrate assets from Supabase to local SQLite.
|
|
313
|
+
*
|
|
314
|
+
* Precondition: local SQLite has zero asset records for this user.
|
|
315
|
+
* Naturally idempotent.
|
|
316
|
+
*/
|
|
317
|
+
export async function migrateAssetsFromSupabase(userId) {
|
|
318
|
+
try {
|
|
319
|
+
if (!isDatabaseReady()) {
|
|
320
|
+
console.log("[MIGRATE] Assets: database not initialized — skipping");
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const db = getRawDatabase();
|
|
324
|
+
if (!db)
|
|
325
|
+
return;
|
|
326
|
+
// Check local DB first
|
|
327
|
+
const localCount = db.prepare("SELECT COUNT(*) as cnt FROM assets WHERE user_id = ?").get(userId);
|
|
328
|
+
if (localCount && localCount.cnt > 0) {
|
|
329
|
+
console.log(`[MIGRATE] Assets: local DB already has ${localCount.cnt} records — skipping`);
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
if (!isSupabaseInitialized()) {
|
|
333
|
+
console.log("[MIGRATE] Assets: Supabase not initialized — skipping");
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
console.log("[MIGRATE] Assets: local DB empty, fetching from Supabase...");
|
|
337
|
+
const supabase = getSupabase();
|
|
338
|
+
const { data, error } = await supabase
|
|
339
|
+
.from("assets")
|
|
340
|
+
.select("*")
|
|
341
|
+
.eq("user_id", userId);
|
|
342
|
+
if (error) {
|
|
343
|
+
console.error("[MIGRATE] Assets: Supabase fetch error:", error.message);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
if (!data || data.length === 0) {
|
|
347
|
+
console.log("[MIGRATE] Assets: no records in Supabase — nothing to migrate");
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
const insertStmt = db.prepare(`
|
|
351
|
+
INSERT OR IGNORE INTO assets
|
|
352
|
+
(id, user_id, name, type, local_file_path, remote_url, description, sandbox_id, created_at, updated_at)
|
|
353
|
+
VALUES
|
|
354
|
+
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
355
|
+
`);
|
|
356
|
+
const insertBatch = db.transaction((rows) => {
|
|
357
|
+
for (const r of rows) {
|
|
358
|
+
insertStmt.run(r.id, r.user_id, r.name ?? null, r.type ?? null, r.local_file_path ?? null, r.remote_url ?? null, r.description ?? null, r.sandbox_id ?? null, r.created_at ?? new Date().toISOString(), r.updated_at ?? new Date().toISOString());
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
insertBatch(data);
|
|
362
|
+
console.log(`[MIGRATE] Assets: migrated ${data.length} records from Supabase → local SQLite`);
|
|
363
|
+
}
|
|
364
|
+
catch (err) {
|
|
365
|
+
console.error("[MIGRATE] Assets migration failed (non-fatal):", err);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// ═══════════════════════════════════════════════════════
|
|
369
|
+
// MAIN ENTRY POINT
|
|
370
|
+
// ═══════════════════════════════════════════════════════
|
|
371
|
+
/**
|
|
372
|
+
* Run all startup migrations.
|
|
373
|
+
* Called once during server initialization, after Supabase is ready.
|
|
374
|
+
* All migrations are idempotent and non-fatal.
|
|
375
|
+
*/
|
|
376
|
+
export async function runStartupMigrations(userId) {
|
|
377
|
+
console.log("[MIGRATE] Running startup migrations...");
|
|
378
|
+
await ensureClientApiToken(userId);
|
|
379
|
+
await migrateCronJobsFromSupabase(userId);
|
|
380
|
+
await migrateActivityFromSupabase(userId);
|
|
381
|
+
await migrateProjectsFromSupabase(userId);
|
|
382
|
+
await migrateAssetsFromSupabase(userId);
|
|
383
|
+
console.log("[MIGRATE] Startup migrations complete");
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/startup/migrate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED