ugly-app 0.1.243 → 0.1.245
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/cli/authCommands.d.ts +0 -1
- package/dist/cli/authCommands.d.ts.map +1 -1
- package/dist/cli/authCommands.js +18 -24
- package/dist/cli/authCommands.js.map +1 -1
- package/dist/cli/configure.js +9 -9
- package/dist/cli/configure.js.map +1 -1
- package/dist/cli/deployClient.d.ts.map +1 -1
- package/dist/cli/deployClient.js +23 -10
- package/dist/cli/deployClient.js.map +1 -1
- package/dist/cli/dev.d.ts +0 -1
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +32 -82
- package/dist/cli/dev.js.map +1 -1
- package/dist/cli/feedbackResolve.js +1 -1
- package/dist/cli/feedbackResolve.js.map +1 -1
- package/dist/cli/feedbackSubmit.js +2 -2
- package/dist/cli/feedbackSubmit.js.map +1 -1
- package/dist/cli/index.js +3 -58
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/scaffold.d.ts.map +1 -1
- package/dist/cli/scaffold.js +8 -39
- package/dist/cli/scaffold.js.map +1 -1
- package/dist/cli/serverLogQuery.d.ts +1 -1
- package/dist/cli/serverLogQuery.d.ts.map +1 -1
- package/dist/cli/serverLogQuery.js +11 -11
- package/dist/cli/serverLogQuery.js.map +1 -1
- package/dist/cli/serverLogQueryApi.js +2 -2
- package/dist/cli/serverLogQueryApi.js.map +1 -1
- package/dist/cli/storageClient.d.ts.map +1 -1
- package/dist/cli/storageClient.js +2 -13
- package/dist/cli/storageClient.js.map +1 -1
- package/dist/cli/uglyBotSetup.d.ts +2 -2
- package/dist/cli/uglyBotSetup.d.ts.map +1 -1
- package/dist/cli/uglyBotSetup.js +11 -28
- package/dist/cli/uglyBotSetup.js.map +1 -1
- package/dist/cli/uglyappConfig.d.ts +10 -5
- package/dist/cli/uglyappConfig.d.ts.map +1 -1
- package/dist/cli/uglyappConfig.js +58 -25
- package/dist/cli/uglyappConfig.js.map +1 -1
- package/dist/cli/uglyappConfig.test.js +3 -3
- package/dist/cli/upgrade.d.ts.map +1 -1
- package/dist/cli/upgrade.js +1 -25
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli/url.js +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/server/App.d.ts.map +1 -1
- package/dist/server/App.js +8 -10
- package/dist/server/App.js.map +1 -1
- package/dist/server/Auth.d.ts +0 -2
- package/dist/server/Auth.d.ts.map +1 -1
- package/dist/server/Auth.js +31 -112
- package/dist/server/Auth.js.map +1 -1
- package/dist/server/Email.d.ts +3 -10
- package/dist/server/Email.d.ts.map +1 -1
- package/dist/server/Email.js +19 -53
- package/dist/server/Email.js.map +1 -1
- package/dist/server/PushNotification.d.ts +2 -3
- package/dist/server/PushNotification.d.ts.map +1 -1
- package/dist/server/PushNotification.js +11 -40
- package/dist/server/PushNotification.js.map +1 -1
- package/dist/server/Storage.d.ts.map +1 -1
- package/dist/server/Storage.js +9 -20
- package/dist/server/Storage.js.map +1 -1
- package/dist/server/ai/ProviderBalance.d.ts.map +1 -1
- package/dist/server/ai/ProviderBalance.js +2 -5
- package/dist/server/ai/ProviderBalance.js.map +1 -1
- package/dist/server/embeddings/EmbeddingClient.js +1 -1
- package/dist/server/embeddings/EmbeddingClient.js.map +1 -1
- package/dist/server/embeddings/providers/OpenAI.d.ts.map +1 -1
- package/dist/server/embeddings/providers/OpenAI.js +6 -19
- package/dist/server/embeddings/providers/OpenAI.js.map +1 -1
- package/dist/server/embeddings/types.d.ts +0 -1
- package/dist/server/embeddings/types.d.ts.map +1 -1
- package/dist/server/uglyBotProxy.d.ts +2 -0
- package/dist/server/uglyBotProxy.d.ts.map +1 -0
- package/dist/server/uglyBotProxy.js +38 -0
- package/dist/server/uglyBotProxy.js.map +1 -0
- package/dist/three/server/VideoEncoder.d.ts.map +1 -1
- package/dist/three/server/VideoEncoder.js +2 -1
- package/dist/three/server/VideoEncoder.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/authCommands.ts +17 -27
- package/src/cli/configure.ts +10 -10
- package/src/cli/deployClient.ts +19 -13
- package/src/cli/dev.ts +30 -86
- package/src/cli/feedbackResolve.ts +1 -1
- package/src/cli/feedbackSubmit.ts +2 -2
- package/src/cli/index.ts +7 -61
- package/src/cli/scaffold.ts +9 -46
- package/src/cli/serverLogQuery.ts +11 -13
- package/src/cli/serverLogQueryApi.ts +2 -2
- package/src/cli/storageClient.ts +2 -15
- package/src/cli/uglyBotSetup.ts +10 -28
- package/src/cli/uglyappConfig.test.ts +3 -3
- package/src/cli/uglyappConfig.ts +60 -28
- package/src/cli/upgrade.ts +1 -30
- package/src/cli/url.ts +1 -1
- package/src/cli/version.ts +1 -1
- package/src/server/App.ts +8 -10
- package/src/server/Auth.ts +29 -116
- package/src/server/Email.ts +20 -69
- package/src/server/PushNotification.ts +11 -45
- package/src/server/Storage.ts +10 -26
- package/src/server/ai/ProviderBalance.ts +2 -5
- package/src/server/embeddings/EmbeddingClient.ts +1 -1
- package/src/server/embeddings/providers/OpenAI.ts +6 -26
- package/src/server/embeddings/types.ts +0 -1
- package/src/server/uglyBotProxy.ts +44 -0
- package/src/three/server/VideoEncoder.ts +2 -1
- package/templates/client/pages/EmailTestPage.tsx +1 -1
- package/templates/gitignore +1 -4
- package/templates/package.json +1 -1
- package/templates/server/index.ts +1 -1
- package/templates/.env.example +0 -49
|
@@ -2,7 +2,6 @@ export declare function createAccount(email: string, name?: string): Promise<{
|
|
|
2
2
|
userId: string;
|
|
3
3
|
email: string;
|
|
4
4
|
}>;
|
|
5
|
-
export declare function createToken(userId: string): Promise<string>;
|
|
6
5
|
export declare function createBot(slug: string, name: string): Promise<{
|
|
7
6
|
userId: string;
|
|
8
7
|
token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authCommands.d.ts","sourceRoot":"","sources":["../../src/cli/authCommands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authCommands.d.ts","sourceRoot":"","sources":["../../src/cli/authCommands.ts"],"names":[],"mappings":"AASA,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoC5C;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA6C5C"}
|
package/dist/cli/authCommands.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SignJWT } from 'jose';
|
|
2
1
|
import { nanoid } from 'nanoid';
|
|
3
2
|
import { UGLY_BOT_URL } from '../shared/uglyBotUrl.js';
|
|
4
3
|
import { initPostgres, query as pgQuery, stopPostgres } from '../server/Postgres.js';
|
|
@@ -34,35 +33,30 @@ export async function createAccount(email, name) {
|
|
|
34
33
|
await stopPostgres();
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
|
-
function getJwtSecret() {
|
|
38
|
-
const secret = process.env.JWT_SECRET;
|
|
39
|
-
if (!secret)
|
|
40
|
-
throw new Error('JWT_SECRET env var is required');
|
|
41
|
-
return new TextEncoder().encode(secret);
|
|
42
|
-
}
|
|
43
|
-
export async function createToken(userId) {
|
|
44
|
-
return new SignJWT({ sub: userId })
|
|
45
|
-
.setProtectedHeader({ alg: 'HS256' })
|
|
46
|
-
.setExpirationTime('30d')
|
|
47
|
-
.setIssuedAt()
|
|
48
|
-
.sign(getJwtSecret());
|
|
49
|
-
}
|
|
50
36
|
export async function createBot(slug, name) {
|
|
51
37
|
const fs = await import('fs');
|
|
52
|
-
let
|
|
38
|
+
let projectToken = '';
|
|
39
|
+
// Read from .uglyapp config
|
|
53
40
|
try {
|
|
54
|
-
|
|
41
|
+
const config = JSON.parse(fs.readFileSync('.uglyapp', 'utf-8'));
|
|
42
|
+
if (typeof config.uglyBotToken === 'string')
|
|
43
|
+
projectToken = config.uglyBotToken;
|
|
55
44
|
}
|
|
56
|
-
catch {
|
|
57
|
-
|
|
45
|
+
catch { /* no .uglyapp */ }
|
|
46
|
+
// Fall back to .env for backwards compatibility
|
|
47
|
+
if (!projectToken) {
|
|
48
|
+
try {
|
|
49
|
+
const envContent = fs.readFileSync('.env', 'utf-8');
|
|
50
|
+
const tokenMatch = /^UGLY_BOT_TOKEN=(.+)$/m.exec(envContent);
|
|
51
|
+
if (tokenMatch?.[1])
|
|
52
|
+
projectToken = tokenMatch[1];
|
|
53
|
+
}
|
|
54
|
+
catch { /* no .env either */ }
|
|
58
55
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
throw new Error('UGLY_BOT_TOKEN not found in .env. Run "npx ugly-app login" first.');
|
|
56
|
+
if (!projectToken) {
|
|
57
|
+
throw new Error('uglyBotToken not found in .uglyapp. Run "npx ugly-app login" first.');
|
|
62
58
|
}
|
|
63
|
-
const
|
|
64
|
-
const urlMatch = /^UGLY_BOT_URL=(.+)$/m.exec(envContent);
|
|
65
|
-
const serverUrl = urlMatch?.[1] ?? UGLY_BOT_URL;
|
|
59
|
+
const serverUrl = UGLY_BOT_URL;
|
|
66
60
|
const res = await fetch(`${serverUrl}/request`, {
|
|
67
61
|
method: 'POST',
|
|
68
62
|
headers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authCommands.js","sourceRoot":"","sources":["../../src/cli/authCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"authCommands.js","sourceRoot":"","sources":["../../src/cli/authCommands.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/configure.js
CHANGED
|
@@ -2,11 +2,11 @@ import fs from 'fs';
|
|
|
2
2
|
import { nanoid } from 'nanoid';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import readline from 'readline';
|
|
5
|
-
import {
|
|
6
|
-
async function
|
|
5
|
+
import { printLocalPorts, readUglyAppConfig, validateLocalPort, writeUglyAppConfig, } from './uglyappConfig.js';
|
|
6
|
+
async function promptLocalPort(rl) {
|
|
7
7
|
return new Promise((resolve) => {
|
|
8
8
|
const ask = () => {
|
|
9
|
-
rl.question('
|
|
9
|
+
rl.question('Local port? [3000]: ', (answer) => {
|
|
10
10
|
const raw = answer.trim() || '3000';
|
|
11
11
|
const parsed = parseInt(raw, 10);
|
|
12
12
|
// String(parsed) !== raw catches "3000abc" → parseInt returns 3000 but string differs
|
|
@@ -28,7 +28,7 @@ export async function configureProject(cwd) {
|
|
|
28
28
|
const configPath = path.join(cwd, '.uglyapp');
|
|
29
29
|
if (fs.existsSync(configPath)) {
|
|
30
30
|
const existing = readUglyAppConfig(cwd);
|
|
31
|
-
console.warn(`[uglyapp] .uglyapp already exists (projectId: ${existing?.projectId},
|
|
31
|
+
console.warn(`[uglyapp] .uglyapp already exists (projectId: ${existing?.projectId}, localPort: ${existing?.localPort}). Remove it first to reconfigure.`);
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
const rl = readline.createInterface({
|
|
@@ -36,14 +36,14 @@ export async function configureProject(cwd) {
|
|
|
36
36
|
output: process.stdout,
|
|
37
37
|
});
|
|
38
38
|
try {
|
|
39
|
-
const
|
|
40
|
-
|
|
39
|
+
const localPort = await promptLocalPort(rl);
|
|
40
|
+
validateLocalPort(localPort); // warns on conflicts, does not throw
|
|
41
41
|
const projectId = nanoid(10);
|
|
42
|
-
writeUglyAppConfig(cwd, { projectId,
|
|
42
|
+
writeUglyAppConfig(cwd, { projectId, localPort });
|
|
43
43
|
console.log(`\n[uglyapp] Created .uglyapp`);
|
|
44
44
|
console.log(` projectId: ${projectId}`);
|
|
45
|
-
console.log(`
|
|
46
|
-
|
|
45
|
+
console.log(` localPort: ${localPort}`);
|
|
46
|
+
printLocalPorts(localPort);
|
|
47
47
|
console.log('Commit .uglyapp to share port assignments with your team.');
|
|
48
48
|
}
|
|
49
49
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/cli/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/cli/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,KAAK,UAAU,eAAe,CAAC,EAAsB;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAG,EAAE;YACf,EAAE,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC;gBACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACjC,sFAAsF;gBACtF,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;oBACzB,MAAM,IAAI,CAAC;oBACX,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,EACtB,CAAC;oBACD,OAAO,CAAC,KAAK,CACX,kBAAkB,GAAG,2CAA2C,CACjE,CAAC;oBACF,GAAG,EAAE,CAAC;gBACR,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,GAAG,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAE9C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CACV,iDAAiD,QAAQ,EAAE,SAAS,gBAAgB,QAAQ,EAAE,SAAS,oCAAoC,CAC5I,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;QAC5C,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,qCAAqC;QAEnE,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,kBAAkB,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAElD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;QACzC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IAC3E,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployClient.d.ts","sourceRoot":"","sources":["../../src/cli/deployClient.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"deployClient.d.ts","sourceRoot":"","sources":["../../src/cli/deployClient.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CA4B1D;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAUf"}
|
package/dist/cli/deployClient.js
CHANGED
|
@@ -2,21 +2,34 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { UGLY_BOT_URL } from '../shared/uglyBotUrl.js';
|
|
4
4
|
export function readDeployConfig(cwd) {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
// Read from .uglyapp config
|
|
6
|
+
const configPath = path.join(cwd, '.uglyapp');
|
|
7
|
+
let token;
|
|
8
|
+
let deployUrl = UGLY_BOT_URL;
|
|
7
9
|
try {
|
|
8
|
-
|
|
10
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
11
|
+
if (typeof config.uglyBotToken === 'string')
|
|
12
|
+
token = config.uglyBotToken;
|
|
13
|
+
if (typeof config.deployUrl === 'string')
|
|
14
|
+
deployUrl = config.deployUrl;
|
|
9
15
|
}
|
|
10
16
|
catch {
|
|
11
|
-
|
|
17
|
+
// Fall back to .env for backwards compatibility
|
|
18
|
+
try {
|
|
19
|
+
const content = fs.readFileSync(path.join(cwd, '.env'), 'utf-8');
|
|
20
|
+
const tokenMatch = /^UGLY_BOT_TOKEN=(.+)$/m.exec(content);
|
|
21
|
+
if (tokenMatch?.[1])
|
|
22
|
+
token = tokenMatch[1].trim();
|
|
23
|
+
const urlMatch = /^DEPLOY_URL=(.+)$/m.exec(content);
|
|
24
|
+
if (urlMatch?.[1])
|
|
25
|
+
deployUrl = urlMatch[1].trim();
|
|
26
|
+
}
|
|
27
|
+
catch { /* no .env either */ }
|
|
12
28
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
throw new Error('UGLY_BOT_TOKEN not found in .env. Run "npx ugly-app login" first.');
|
|
29
|
+
if (!token) {
|
|
30
|
+
throw new Error('uglyBotToken not found in .uglyapp. Run "npx ugly-app login" first.');
|
|
16
31
|
}
|
|
17
|
-
|
|
18
|
-
const deployUrl = urlMatch?.[1]?.trim() || UGLY_BOT_URL;
|
|
19
|
-
return { token: tokenMatch[1].trim(), deployUrl };
|
|
32
|
+
return { token, deployUrl };
|
|
20
33
|
}
|
|
21
34
|
export async function deployRequest(op, input, config) {
|
|
22
35
|
const res = await fetch(`${config.deployUrl}/request`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployClient.js","sourceRoot":"","sources":["../../src/cli/deployClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAOvD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,
|
|
1
|
+
{"version":3,"file":"deployClient.js","sourceRoot":"","sources":["../../src/cli/deployClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAOvD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,4BAA4B;IAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC9C,IAAI,KAAyB,CAAC;IAC9B,IAAI,SAAS,GAAG,YAAY,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC3F,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;YAAE,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;QACzE,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YAAE,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;QAChD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;gBAAE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAAE,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAU,EACV,KAA8B,EAC9B,MAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,UAAU,EAAE;QACrD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;KACpC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAAoB,EACpB,QAAgB,EAChB,WAAmB;IAEnB,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;QACpC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;QACxC,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
|
package/dist/cli/dev.d.ts
CHANGED
package/dist/cli/dev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAqDA,wBAAsB,MAAM,CAAC,IAAI,GAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAqC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoKzH"}
|
package/dist/cli/dev.js
CHANGED
|
@@ -22,7 +22,7 @@ function waitForPort(port, retries = 30, intervalMs = 1000) {
|
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
import { runMigrations } from './migrate.js';
|
|
25
|
-
import { computeEnvVars, readUglyAppConfig,
|
|
25
|
+
import { computeEnvVars, readUglyAppConfig, validateLocalPort, } from './uglyappConfig.js';
|
|
26
26
|
async function waitForPostgres(url, opts) {
|
|
27
27
|
for (let i = 0; i < opts.retries; i++) {
|
|
28
28
|
try {
|
|
@@ -36,39 +36,25 @@ async function waitForPostgres(url, opts) {
|
|
|
36
36
|
// fall through to retry
|
|
37
37
|
}
|
|
38
38
|
if (i === opts.retries - 1)
|
|
39
|
-
throw new Error(`[ugly-app] PostgreSQL not ready after ${Math.round((opts.retries * opts.intervalMs) / 1000)}s —
|
|
39
|
+
throw new Error(`[ugly-app] PostgreSQL not ready after ${Math.round((opts.retries * opts.intervalMs) / 1000)}s — check ugly.bot connection`);
|
|
40
40
|
// Print a dot every 5s so the user knows we're making progress
|
|
41
41
|
if (i % 5 === 4)
|
|
42
42
|
process.stdout.write('.');
|
|
43
43
|
await new Promise((r) => setTimeout(r, opts.intervalMs));
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
async function
|
|
47
|
-
const adminUrl = `postgresql://app:app@localhost:5432/app`;
|
|
48
|
-
const client = new pg.Client({ connectionString: adminUrl });
|
|
49
|
-
try {
|
|
50
|
-
await client.connect();
|
|
51
|
-
const result = await client.query(`SELECT 1 FROM pg_database WHERE datname = $1`, [projectId]);
|
|
52
|
-
if (result.rowCount === 0) {
|
|
53
|
-
await client.query(`CREATE DATABASE "${projectId.replace(/"/g, '""')}" OWNER app`);
|
|
54
|
-
console.log(`[ugly-app] Created database: ${projectId}`);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
finally {
|
|
58
|
-
await client.end();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export async function runDev(opts = { watch: false, verbose: false, local: false }) {
|
|
46
|
+
export async function runDev(opts = { watch: false, verbose: false }) {
|
|
62
47
|
// Read .uglyapp config and inject computed env vars before spawning any child process.
|
|
63
|
-
// Vars set here take precedence over .env values because dotenv (used by tsx --env-file)
|
|
64
|
-
// skips vars already present in process.env (override: false behavior).
|
|
65
48
|
const config = readUglyAppConfig(process.cwd());
|
|
66
49
|
if (config !== null) {
|
|
67
|
-
|
|
50
|
+
validateLocalPort(config.localPort); // warns on conflicts
|
|
68
51
|
const envVars = computeEnvVars(config);
|
|
69
52
|
for (const [key, value] of Object.entries(envVars)) {
|
|
70
53
|
process.env[key] = value;
|
|
71
54
|
}
|
|
55
|
+
// Inject config fields as env vars for the server process
|
|
56
|
+
if (config.uglyBotToken)
|
|
57
|
+
process.env['UGLY_BOT_TOKEN'] = config.uglyBotToken;
|
|
72
58
|
}
|
|
73
59
|
// ── Set universal dev env vars ─────────────────────────────────────────────
|
|
74
60
|
if (!process.env['NODE_ENV'])
|
|
@@ -83,8 +69,6 @@ export async function runDev(opts = { watch: false, verbose: false, local: false
|
|
|
83
69
|
const port = process.env['PORT'] ?? '4321';
|
|
84
70
|
try {
|
|
85
71
|
if (process.platform === 'win32') {
|
|
86
|
-
// Find PID listening on the port and kill it. netstat output looks like:
|
|
87
|
-
// TCP 0.0.0.0:4321 0.0.0.0:0 LISTENING 12345
|
|
88
72
|
const out = execSync(`netstat -ano | findstr :${port} | findstr LISTENING`, { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
89
73
|
const pids = new Set(out.split('\n').map(line => line.trim().split(/\s+/).pop()).filter(Boolean));
|
|
90
74
|
for (const pid of pids) {
|
|
@@ -101,54 +85,36 @@ export async function runDev(opts = { watch: false, verbose: false, local: false
|
|
|
101
85
|
catch {
|
|
102
86
|
// best-effort — port may simply not be in use
|
|
103
87
|
}
|
|
104
|
-
// ── 1. Start
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
console.warn('[ugly-app] No ugly.bot auth — falling back to Docker (run `npx ugly-app login` for cloud dev)');
|
|
111
|
-
useDocker = true;
|
|
112
|
-
}
|
|
113
|
-
else if (config) {
|
|
114
|
-
const { startDevTunnel } = await import('./devTunnel.js');
|
|
115
|
-
try {
|
|
116
|
-
// Relay proxy tunnel traffic to the main app server port
|
|
117
|
-
const appPort = config.portStart ? config.portStart : parseInt(port, 10);
|
|
118
|
-
const ports = await startDevTunnel({ projectId: config.projectId, token: auth.token, vitePort: appPort });
|
|
119
|
-
process.env['POSTGRES_URL'] = `postgresql://app:app@localhost:${ports.postgres}/${config.projectId}`;
|
|
120
|
-
process.env['NATS_URL'] = `nats://localhost:${ports.nats}`;
|
|
121
|
-
process.env['MINIO_ENDPOINT'] = `http://localhost:${ports.s3}`;
|
|
122
|
-
process.env['QDRANT_URL'] = `http://localhost:${ports.qdrantHttp}`;
|
|
123
|
-
}
|
|
124
|
-
catch (err) {
|
|
125
|
-
console.error(`[ugly-app] Sidecar failed: ${err.message}`);
|
|
126
|
-
console.error('[ugly-app] Start with --local for offline Docker mode');
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
88
|
+
// ── 1. Start cloud tunnel (sidecar) ──────────────────────────────────────
|
|
89
|
+
const { readUglyBotAuth, isTokenValid } = await import('./uglyBotAuth.js');
|
|
90
|
+
const auth = readUglyBotAuth();
|
|
91
|
+
if (!auth?.token || !isTokenValid(auth)) {
|
|
92
|
+
console.error('[ugly-app] Not logged in. Run `npx ugly-app login` first.');
|
|
93
|
+
process.exit(1);
|
|
130
94
|
}
|
|
131
|
-
if (
|
|
132
|
-
const {
|
|
133
|
-
|
|
134
|
-
|
|
95
|
+
if (config) {
|
|
96
|
+
const { startDevTunnel } = await import('./devTunnel.js');
|
|
97
|
+
try {
|
|
98
|
+
const appPort = config.localPort ? config.localPort : parseInt(port, 10);
|
|
99
|
+
const ports = await startDevTunnel({ projectId: config.projectId, token: auth.token, vitePort: appPort });
|
|
100
|
+
process.env['POSTGRES_URL'] = `postgresql://app:app@localhost:${ports.postgres}/${config.projectId}`;
|
|
101
|
+
process.env['NATS_URL'] = `nats://localhost:${ports.nats}`;
|
|
102
|
+
process.env['MINIO_ENDPOINT'] = `http://localhost:${ports.s3}`;
|
|
103
|
+
process.env['QDRANT_URL'] = `http://localhost:${ports.qdrantHttp}`;
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
console.error(`[ugly-app] Cloud tunnel failed: ${err.message}`);
|
|
107
|
+
process.exit(1);
|
|
135
108
|
}
|
|
136
109
|
}
|
|
137
|
-
// ── 2. Wait for PostgreSQL to be reachable
|
|
138
|
-
|
|
139
|
-
const pgWaitUrl = useDocker
|
|
140
|
-
? 'postgresql://app:app@localhost:5432/app'
|
|
141
|
-
: (process.env['POSTGRES_URL'] ?? 'postgresql://app:app@localhost:5432/app');
|
|
110
|
+
// ── 2. Wait for PostgreSQL to be reachable ────────────────────────────────
|
|
111
|
+
const pgWaitUrl = process.env['POSTGRES_URL'] ?? 'postgresql://app:app@localhost:5432/app';
|
|
142
112
|
process.stdout.write('[ugly-app] Waiting for PostgreSQL');
|
|
143
113
|
await waitForPostgres(pgWaitUrl, { retries: 30, intervalMs: 1000 });
|
|
144
114
|
process.stdout.write(' ✓\n');
|
|
145
|
-
// ── 3.
|
|
146
|
-
if (config && useDocker) {
|
|
147
|
-
await ensureProjectDatabase(config.projectId);
|
|
148
|
-
}
|
|
149
|
-
// ── 4. Run any pending migrations ─────────────────────────────────────────
|
|
115
|
+
// ── 3. Run any pending migrations ─────────────────────────────────────────
|
|
150
116
|
await runMigrations();
|
|
151
|
-
// ──
|
|
117
|
+
// ── 4. Spawn dev processes ────────────────────────────────────────────────
|
|
152
118
|
const verbose = opts.verbose;
|
|
153
119
|
if (verbose) {
|
|
154
120
|
console.log('[ugly-app] Verbose mode enabled');
|
|
@@ -159,31 +125,15 @@ export async function runDev(opts = { watch: false, verbose: false, local: false
|
|
|
159
125
|
console.log(`[ugly-app] POSTGRES_URL: ${process.env['POSTGRES_URL'] ?? '(default)'}`);
|
|
160
126
|
}
|
|
161
127
|
return new Promise((resolve, reject) => {
|
|
162
|
-
// tsc and eslint are wrapped with `|| true` so their failures don't kill
|
|
163
|
-
// the session. We build a single quoted shell string so the `||` is
|
|
164
|
-
// evaluated by the inner sh (inside concurrently), not by the outer shell
|
|
165
|
-
// that launches concurrently itself.
|
|
166
128
|
const isWin = process.platform === 'win32';
|
|
167
129
|
const noFail = (cmd) => isWin ? `(${cmd} || (exit /b 0))` : `${cmd} || true`;
|
|
168
|
-
// Use local node_modules/.bin/ binaries directly instead of npx.
|
|
169
|
-
// npx on older npm versions (e.g. 7.x) dumps verbose timing logs and can
|
|
170
|
-
// resolve to the wrong global package (e.g. `esw` the esbuild wrapper
|
|
171
|
-
// instead of `eslint-watch`'s `esw` binary).
|
|
172
130
|
const binDir = path.join(process.cwd(), 'node_modules', '.bin') + path.sep;
|
|
173
131
|
const bin = (name) => `"${binDir}${name}"`;
|
|
174
|
-
// Quote each concurrently sub-command so spaces/operators are preserved
|
|
175
|
-
// when the outer shell reassembles argv.
|
|
176
132
|
const q = (s) => `"${s.replace(/"/g, '\\"')}"`;
|
|
177
133
|
const serverCmd = opts.watch
|
|
178
|
-
? `${bin('tsx')} watch --
|
|
179
|
-
: `${bin('tsx')}
|
|
180
|
-
// Only include eslint-watch if the esw binary exists (it requires eslint <9
|
|
181
|
-
// and may not be installed in projects using eslint 9+).
|
|
134
|
+
? `${bin('tsx')} watch --clear-screen=false --ignore ./client --ignore "**/node_modules/**" server/index.ts`
|
|
135
|
+
: `${bin('tsx')} server/index.ts`;
|
|
182
136
|
const hasEsw = fs.existsSync(path.join(binDir, 'esw'));
|
|
183
|
-
// On Windows, concurrently's line-buffered prefixed output collides with
|
|
184
|
-
// npm's \r-based progress bar and cmd.exe pipe buffering, garbling log
|
|
185
|
-
// lines and making the server look stuck. --raw bypasses concurrently's
|
|
186
|
-
// output buffering so child stdout/stderr flows straight through.
|
|
187
137
|
const rawFlag = isWin ? '--raw' : '';
|
|
188
138
|
const namesFlag = isWin
|
|
189
139
|
? ''
|
package/dist/cli/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,SAAS,WAAW,CAAC,IAAY,EAAE,OAAO,GAAG,EAAE,EAAE,UAAU,GAAG,IAAI;IAChE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,SAAS,UAAU;YACjB,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,EAAE,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACpE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AACD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,KAAK,UAAU,eAAe,CAC5B,GAAW,EACX,IAA6C;IAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC;YACvF,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ function readAuth() {
|
|
|
10
10
|
return JSON.parse(fs.readFileSync(authPath, 'utf-8'));
|
|
11
11
|
}
|
|
12
12
|
function getAppApiUrl() {
|
|
13
|
-
return
|
|
13
|
+
return UGLY_BOT_URL;
|
|
14
14
|
}
|
|
15
15
|
export async function resolveFeedback(opts) {
|
|
16
16
|
const appApiUrl = getAppApiUrl();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackResolve.js","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAcvD,SAAS,QAAQ;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAe,CAAC;AACtE,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"feedbackResolve.js","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAcvD,SAAS,QAAQ;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,4CAA4C,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAe,CAAC;AACtE,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA4B;IAE5B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IAExB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,UAAU,EAAE;QAC9C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,uBAAuB;YACjC,KAAK,EAAE;gBACL,gBAAgB,EAAE,IAAI,CAAC,UAAU;gBACjC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B;SACF,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
|
|
@@ -13,11 +13,11 @@ function readAuth() {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
function getAppApiUrl() {
|
|
16
|
-
return
|
|
16
|
+
return UGLY_BOT_URL;
|
|
17
17
|
}
|
|
18
18
|
function getProjectId() {
|
|
19
19
|
const config = readUglyAppConfig(process.cwd());
|
|
20
|
-
return
|
|
20
|
+
return config?.projectId ?? 'unknown';
|
|
21
21
|
}
|
|
22
22
|
export async function submitFeedback(opts) {
|
|
23
23
|
const appApiUrl = getAppApiUrl();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackSubmit.js","sourceRoot":"","sources":["../../src/cli/feedbackSubmit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAkBvD,SAAS,QAAQ;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAe,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"feedbackSubmit.js","sourceRoot":"","sources":["../../src/cli/feedbackSubmit.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -36,46 +36,16 @@ program
|
|
|
36
36
|
});
|
|
37
37
|
program
|
|
38
38
|
.command('dev')
|
|
39
|
-
.description('Start server, vite, tsc, and eslint concurrently (cloud tunnel
|
|
39
|
+
.description('Start server, vite, tsc, and eslint concurrently (cloud tunnel)')
|
|
40
40
|
.option('--watch', 'Enable file watchers (tsx watch, tsc --watch, eslint --watch)')
|
|
41
41
|
.option('--verbose', 'Show detailed startup and process output for debugging')
|
|
42
|
-
.option('--local', 'Use local Docker instead of cloud tunnel for infrastructure')
|
|
43
42
|
.option('--ugly-bot-local', 'Use local ugly.bot on localhost:3000 for auth/API, localhost:9000 for CDN')
|
|
44
43
|
.action(async (opts) => {
|
|
45
44
|
try {
|
|
46
45
|
if (opts.uglyBotLocal) {
|
|
47
46
|
process.env['UGLY_BOT_LOCAL'] = '1';
|
|
48
47
|
}
|
|
49
|
-
await runDev({ watch: opts.watch ?? false, verbose: opts.verbose ?? false
|
|
50
|
-
}
|
|
51
|
-
catch (e) {
|
|
52
|
-
console.error(e.message);
|
|
53
|
-
process.exit(1);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
const docker = program
|
|
57
|
-
.command('docker')
|
|
58
|
-
.description('Manage shared Docker infrastructure (Postgres, NATS, MinIO, Qdrant)');
|
|
59
|
-
docker
|
|
60
|
-
.command('start')
|
|
61
|
-
.description('Start shared Docker infrastructure at ~/.ugly-app/')
|
|
62
|
-
.action(async () => {
|
|
63
|
-
try {
|
|
64
|
-
const { dockerStart } = await import('./docker.js');
|
|
65
|
-
dockerStart();
|
|
66
|
-
}
|
|
67
|
-
catch (e) {
|
|
68
|
-
console.error(e.message);
|
|
69
|
-
process.exit(1);
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
docker
|
|
73
|
-
.command('stop')
|
|
74
|
-
.description('Stop shared Docker infrastructure (data is preserved)')
|
|
75
|
-
.action(async () => {
|
|
76
|
-
try {
|
|
77
|
-
const { dockerStop } = await import('./docker.js');
|
|
78
|
-
dockerStop();
|
|
48
|
+
await runDev({ watch: opts.watch ?? false, verbose: opts.verbose ?? false });
|
|
79
49
|
}
|
|
80
50
|
catch (e) {
|
|
81
51
|
console.error(e.message);
|
|
@@ -148,13 +118,6 @@ program
|
|
|
148
118
|
process.exit(1);
|
|
149
119
|
}
|
|
150
120
|
});
|
|
151
|
-
program
|
|
152
|
-
.command('db:migrate-postgres')
|
|
153
|
-
.description('Migrate data from MongoDB to PostgreSQL')
|
|
154
|
-
.action(async () => {
|
|
155
|
-
const { runMigrateToPostgres } = await import('./migrateToPostgres.js');
|
|
156
|
-
await runMigrateToPostgres();
|
|
157
|
-
});
|
|
158
121
|
program
|
|
159
122
|
.command('publish:assets')
|
|
160
123
|
.description('Publish static assets to CDN')
|
|
@@ -194,7 +157,6 @@ program
|
|
|
194
157
|
try {
|
|
195
158
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
196
159
|
await queryServerLogs('errorLog', {
|
|
197
|
-
envFile: '.env',
|
|
198
160
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
199
161
|
json: opts.json,
|
|
200
162
|
});
|
|
@@ -231,7 +193,6 @@ program
|
|
|
231
193
|
try {
|
|
232
194
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
233
195
|
await queryServerLogs('perfLog', {
|
|
234
|
-
envFile: '.env',
|
|
235
196
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
236
197
|
json: opts.json,
|
|
237
198
|
});
|
|
@@ -268,7 +229,6 @@ program
|
|
|
268
229
|
try {
|
|
269
230
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
270
231
|
await queryServerLogs('feedbackReport', {
|
|
271
|
-
envFile: '.env',
|
|
272
232
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
273
233
|
json: opts.json,
|
|
274
234
|
});
|
|
@@ -392,21 +352,6 @@ program
|
|
|
392
352
|
process.exit(1);
|
|
393
353
|
}
|
|
394
354
|
});
|
|
395
|
-
program
|
|
396
|
-
.command('auth:create-token')
|
|
397
|
-
.description('Generate a JWT login token for an existing userId')
|
|
398
|
-
.requiredOption('--user-id <userId>', 'User ID to generate token for')
|
|
399
|
-
.action(async (opts) => {
|
|
400
|
-
try {
|
|
401
|
-
const { createToken } = await import('./authCommands.js');
|
|
402
|
-
const token = await createToken(opts.userId);
|
|
403
|
-
console.log(JSON.stringify({ token }, null, 2));
|
|
404
|
-
}
|
|
405
|
-
catch (e) {
|
|
406
|
-
console.error(e.message);
|
|
407
|
-
process.exit(1);
|
|
408
|
-
}
|
|
409
|
-
});
|
|
410
355
|
program
|
|
411
356
|
.command('auth:create-bot')
|
|
412
357
|
.description('Create a bot user account on ugly.bot for this project (idempotent)')
|
|
@@ -443,7 +388,7 @@ program
|
|
|
443
388
|
process.exit(1);
|
|
444
389
|
}
|
|
445
390
|
const { runUglyBotSetup } = await import('./uglyBotSetup.js');
|
|
446
|
-
await runUglyBotSetup(config.projectId, path.join(process.cwd(), '.
|
|
391
|
+
await runUglyBotSetup(config.projectId, path.join(process.cwd(), '.uglyapp'));
|
|
447
392
|
}
|
|
448
393
|
catch (e) {
|
|
449
394
|
console.error(e.message);
|