ugly-app 0.1.127 → 0.1.129
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/imageGen.d.ts +1 -0
- package/dist/cli/imageGen.d.ts.map +1 -1
- package/dist/cli/imageGen.js +8 -4
- package/dist/cli/imageGen.js.map +1 -1
- package/dist/cli/index.js +44 -58
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/serverLogQuery.d.ts +2 -1
- package/dist/cli/serverLogQuery.d.ts.map +1 -1
- package/dist/cli/serverLogQuery.js +31 -12
- package/dist/cli/serverLogQuery.js.map +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/package.json +1 -1
- package/src/cli/imageGen.ts +11 -4
- package/src/cli/index.ts +91 -123
- package/src/cli/serverLogQuery.ts +34 -13
- package/src/cli/version.ts +1 -1
- package/templates/.claude/skills/check-errors/SKILL.md +8 -20
- package/templates/.claude/skills/check-feedback/SKILL.md +9 -11
- package/templates/.claude/skills/check-perf/SKILL.md +9 -13
- package/templates/.claude/skills/fix-errors/SKILL.md +11 -3
- package/templates/.claude/skills/fix-feedback/SKILL.md +10 -2
- package/templates/.claude/skills/fix-perf/SKILL.md +10 -2
- package/templates/CLAUDE.md +4 -1
- package/templates/client/pages/AITestPage.tsx +6 -6
- package/templates/package.json +5 -5
package/dist/cli/imageGen.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageGen.d.ts","sourceRoot":"","sources":["../../src/cli/imageGen.ts"],"names":[],"mappings":"AA0BA,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"imageGen.d.ts","sourceRoot":"","sources":["../../src/cli/imageGen.ts"],"names":[],"mappings":"AA0BA,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CA6Ef"}
|
package/dist/cli/imageGen.js
CHANGED
|
@@ -10,6 +10,13 @@ function readAuth() {
|
|
|
10
10
|
}
|
|
11
11
|
export async function runImageGen(prompt, opts) {
|
|
12
12
|
const auth = readAuth();
|
|
13
|
+
const input = {
|
|
14
|
+
model: opts.model ?? 'flux_1_schnell',
|
|
15
|
+
prompt,
|
|
16
|
+
};
|
|
17
|
+
if (opts.aspectRatio) {
|
|
18
|
+
input.options = { aspectRatio: opts.aspectRatio };
|
|
19
|
+
}
|
|
13
20
|
const res = await fetch(`${auth.serverUrl}/request`, {
|
|
14
21
|
method: 'POST',
|
|
15
22
|
headers: {
|
|
@@ -18,10 +25,7 @@ export async function runImageGen(prompt, opts) {
|
|
|
18
25
|
},
|
|
19
26
|
body: JSON.stringify({
|
|
20
27
|
op: 'imageGen',
|
|
21
|
-
input
|
|
22
|
-
model: opts.model ?? 'flux_1_schnell',
|
|
23
|
-
prompt,
|
|
24
|
-
},
|
|
28
|
+
input,
|
|
25
29
|
sessionId: 'cli',
|
|
26
30
|
}),
|
|
27
31
|
});
|
package/dist/cli/imageGen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageGen.js","sourceRoot":"","sources":["../../src/cli/imageGen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAQpB,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,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAe,CAAC;AACtE,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"imageGen.js","sourceRoot":"","sources":["../../src/cli/imageGen.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -169,27 +169,16 @@ program
|
|
|
169
169
|
}
|
|
170
170
|
});
|
|
171
171
|
program
|
|
172
|
-
.command('
|
|
173
|
-
.description('
|
|
174
|
-
.option('--source <source>', 'Filter by source: browser or server')
|
|
175
|
-
.option('--level <level>', 'Filter by level: error, warn, info, log, debug')
|
|
176
|
-
.option('--pattern <pattern>', 'Filter by regex pattern')
|
|
177
|
-
.option('--since <since>', 'Show logs from last duration (5m, 1h, 2d)', '1d')
|
|
172
|
+
.command('error:local')
|
|
173
|
+
.description('Query error logs from local MongoDB (errorLog collection)')
|
|
178
174
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
179
|
-
.option('--category <category>', 'Filter by [CATEGORY] prefix')
|
|
180
|
-
.option('--tail', 'Follow mode - stream new entries as they arrive')
|
|
181
175
|
.option('--json', 'Output as JSON')
|
|
182
176
|
.action(async (opts) => {
|
|
183
177
|
try {
|
|
184
|
-
const {
|
|
185
|
-
await
|
|
186
|
-
|
|
187
|
-
level: opts.level,
|
|
188
|
-
pattern: opts.pattern,
|
|
189
|
-
since: opts.since,
|
|
178
|
+
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
179
|
+
await queryServerLogs('errorLog', {
|
|
180
|
+
envFile: '.env',
|
|
190
181
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
191
|
-
category: opts.category,
|
|
192
|
-
tail: opts.tail,
|
|
193
182
|
json: opts.json,
|
|
194
183
|
});
|
|
195
184
|
}
|
|
@@ -199,16 +188,15 @@ program
|
|
|
199
188
|
}
|
|
200
189
|
});
|
|
201
190
|
program
|
|
202
|
-
.command('
|
|
203
|
-
.description('Query
|
|
204
|
-
.option('--level <level>', 'Filter by level: error, warn, info, log, debug')
|
|
191
|
+
.command('error:server')
|
|
192
|
+
.description('Query error logs from production MongoDB (errorLog collection)')
|
|
205
193
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
206
194
|
.option('--json', 'Output as JSON')
|
|
207
195
|
.action(async (opts) => {
|
|
208
196
|
try {
|
|
209
197
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
210
|
-
await queryServerLogs('
|
|
211
|
-
|
|
198
|
+
await queryServerLogs('errorLog', {
|
|
199
|
+
envFile: '.env.prod',
|
|
212
200
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
213
201
|
json: opts.json,
|
|
214
202
|
});
|
|
@@ -219,26 +207,16 @@ program
|
|
|
219
207
|
}
|
|
220
208
|
});
|
|
221
209
|
program
|
|
222
|
-
.command('
|
|
223
|
-
.description('Query local
|
|
224
|
-
.option('--source <source>', 'Filter by source: browser or server')
|
|
225
|
-
.option('--pattern <pattern>', 'Filter by regex pattern')
|
|
226
|
-
.option('--since <since>', 'Show logs from last duration (5m, 1h, 2d)', '1d')
|
|
210
|
+
.command('perf:local')
|
|
211
|
+
.description('Query performance metrics from local MongoDB (perfLog collection)')
|
|
227
212
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
228
|
-
.option('--category <category>', 'Filter by [CATEGORY] prefix')
|
|
229
|
-
.option('--tail', 'Follow mode - stream new entries as they arrive')
|
|
230
213
|
.option('--json', 'Output as JSON')
|
|
231
214
|
.action(async (opts) => {
|
|
232
215
|
try {
|
|
233
|
-
const {
|
|
234
|
-
await
|
|
235
|
-
|
|
236
|
-
level: 'error',
|
|
237
|
-
pattern: opts.pattern,
|
|
238
|
-
since: opts.since,
|
|
216
|
+
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
217
|
+
await queryServerLogs('perfLog', {
|
|
218
|
+
envFile: '.env',
|
|
239
219
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
240
|
-
category: opts.category,
|
|
241
|
-
tail: opts.tail,
|
|
242
220
|
json: opts.json,
|
|
243
221
|
});
|
|
244
222
|
}
|
|
@@ -248,15 +226,15 @@ program
|
|
|
248
226
|
}
|
|
249
227
|
});
|
|
250
228
|
program
|
|
251
|
-
.command('
|
|
252
|
-
.description('Query
|
|
229
|
+
.command('perf:server')
|
|
230
|
+
.description('Query performance metrics from production MongoDB (perfLog collection)')
|
|
253
231
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
254
232
|
.option('--json', 'Output as JSON')
|
|
255
233
|
.action(async (opts) => {
|
|
256
234
|
try {
|
|
257
235
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
258
|
-
await queryServerLogs('
|
|
259
|
-
|
|
236
|
+
await queryServerLogs('perfLog', {
|
|
237
|
+
envFile: '.env.prod',
|
|
260
238
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
261
239
|
json: opts.json,
|
|
262
240
|
});
|
|
@@ -267,22 +245,16 @@ program
|
|
|
267
245
|
}
|
|
268
246
|
});
|
|
269
247
|
program
|
|
270
|
-
.command('
|
|
271
|
-
.description('Query local
|
|
272
|
-
.option('--source <source>', 'Filter by source: browser or server')
|
|
273
|
-
.option('--since <since>', 'Show logs from last duration (5m, 1h, 2d)', '1d')
|
|
248
|
+
.command('feedback:local')
|
|
249
|
+
.description('Query feedback submissions from local MongoDB (feedbackReport collection)')
|
|
274
250
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
275
|
-
.option('--tail', 'Follow mode - stream new entries as they arrive')
|
|
276
251
|
.option('--json', 'Output as JSON')
|
|
277
252
|
.action(async (opts) => {
|
|
278
253
|
try {
|
|
279
|
-
const {
|
|
280
|
-
await
|
|
281
|
-
|
|
282
|
-
category: 'PERF',
|
|
283
|
-
since: opts.since,
|
|
254
|
+
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
255
|
+
await queryServerLogs('feedbackReport', {
|
|
256
|
+
envFile: '.env',
|
|
284
257
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
285
|
-
tail: opts.tail,
|
|
286
258
|
json: opts.json,
|
|
287
259
|
});
|
|
288
260
|
}
|
|
@@ -292,14 +264,15 @@ program
|
|
|
292
264
|
}
|
|
293
265
|
});
|
|
294
266
|
program
|
|
295
|
-
.command('
|
|
296
|
-
.description('Query
|
|
267
|
+
.command('feedback:server')
|
|
268
|
+
.description('Query feedback submissions from production MongoDB (feedbackReport collection)')
|
|
297
269
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
298
270
|
.option('--json', 'Output as JSON')
|
|
299
271
|
.action(async (opts) => {
|
|
300
272
|
try {
|
|
301
273
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
302
|
-
await queryServerLogs('
|
|
274
|
+
await queryServerLogs('feedbackReport', {
|
|
275
|
+
envFile: '.env.prod',
|
|
303
276
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
304
277
|
json: opts.json,
|
|
305
278
|
});
|
|
@@ -310,15 +283,27 @@ program
|
|
|
310
283
|
}
|
|
311
284
|
});
|
|
312
285
|
program
|
|
313
|
-
.command('
|
|
314
|
-
.description('
|
|
286
|
+
.command('dev-logs')
|
|
287
|
+
.description('Show local dev logs from JSONL files')
|
|
288
|
+
.option('--source <source>', 'Filter by source: browser or server')
|
|
289
|
+
.option('--level <level>', 'Filter by level: error, warn, info, log, debug')
|
|
290
|
+
.option('--pattern <pattern>', 'Filter by regex pattern')
|
|
291
|
+
.option('--since <since>', 'Show logs from last duration (5m, 1h, 2d)', '1d')
|
|
315
292
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
293
|
+
.option('--category <category>', 'Filter by [CATEGORY] prefix')
|
|
294
|
+
.option('--tail', 'Follow mode - stream new entries as they arrive')
|
|
316
295
|
.option('--json', 'Output as JSON')
|
|
317
296
|
.action(async (opts) => {
|
|
318
297
|
try {
|
|
319
|
-
const {
|
|
320
|
-
await
|
|
298
|
+
const { queryLocalLogs } = await import('./logQuery.js');
|
|
299
|
+
await queryLocalLogs({
|
|
300
|
+
source: opts.source,
|
|
301
|
+
level: opts.level,
|
|
302
|
+
pattern: opts.pattern,
|
|
303
|
+
since: opts.since,
|
|
321
304
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
305
|
+
category: opts.category,
|
|
306
|
+
tail: opts.tail,
|
|
322
307
|
json: opts.json,
|
|
323
308
|
});
|
|
324
309
|
}
|
|
@@ -427,6 +412,7 @@ program
|
|
|
427
412
|
.description('Generate an image using AI (requires ugly-app login)')
|
|
428
413
|
.option('--prompt <prompt>', 'Image prompt (alternative to positional arg)')
|
|
429
414
|
.option('--model <model>', 'Model to use (default: flux_1_schnell)')
|
|
415
|
+
.option('--aspect-ratio <size>', 'Aspect ratio: square, portrait_4_3, portrait_16_9, portrait_21_9, landscape_4_3, landscape_16_9, landscape_21_9')
|
|
430
416
|
.option('--output <path>', 'Save image to file instead of printing URL')
|
|
431
417
|
.action(async (positionalPrompt, opts) => {
|
|
432
418
|
const prompt = positionalPrompt || opts?.prompt;
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export declare function queryServerLogs(collection: 'errorLog' | '
|
|
1
|
+
export declare function queryServerLogs(collection: 'errorLog' | 'perfLog' | 'feedbackReport', options: {
|
|
2
|
+
envFile: string;
|
|
2
3
|
limit?: number;
|
|
3
4
|
level?: string;
|
|
4
5
|
json?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverLogQuery.d.ts","sourceRoot":"","sources":["../../src/cli/serverLogQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serverLogQuery.d.ts","sourceRoot":"","sources":["../../src/cli/serverLogQuery.ts"],"names":[],"mappings":"AA8DA,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,EACrD,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3E,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { MongoClient } from 'mongodb';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// Try to read from .env file in cwd
|
|
9
|
-
const envPath = path.join(process.cwd(), '.env');
|
|
4
|
+
import { computeEnvVars, readUglyAppConfig } from './uglyappConfig.js';
|
|
5
|
+
/** Try to read MONGODB_URI from an env file. Returns null if not found. */
|
|
6
|
+
async function readUriFromEnvFile(envFile) {
|
|
7
|
+
const envPath = path.join(process.cwd(), envFile);
|
|
10
8
|
try {
|
|
11
9
|
const content = await fs.readFile(envPath, 'utf-8');
|
|
12
10
|
for (const line of content.split('\n')) {
|
|
@@ -16,9 +14,32 @@ async function getMongoUri() {
|
|
|
16
14
|
}
|
|
17
15
|
}
|
|
18
16
|
catch {
|
|
19
|
-
//
|
|
17
|
+
// File doesn't exist or isn't readable
|
|
20
18
|
}
|
|
21
|
-
return
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
/** Derive MONGODB_URI from .uglyapp config (port-offset-based local Docker). */
|
|
22
|
+
function readUriFromUglyAppConfig() {
|
|
23
|
+
const config = readUglyAppConfig(process.cwd());
|
|
24
|
+
if (!config)
|
|
25
|
+
return null;
|
|
26
|
+
const envVars = computeEnvVars(config);
|
|
27
|
+
return envVars.MONGODB_URI ?? null;
|
|
28
|
+
}
|
|
29
|
+
async function getMongoUri(envFile) {
|
|
30
|
+
// 1. Try the specified env file
|
|
31
|
+
const fromEnv = await readUriFromEnvFile(envFile);
|
|
32
|
+
if (fromEnv)
|
|
33
|
+
return fromEnv;
|
|
34
|
+
// 2. For local (.env), fall back to .uglyapp config or default
|
|
35
|
+
if (envFile === '.env') {
|
|
36
|
+
const fromConfig = readUriFromUglyAppConfig();
|
|
37
|
+
if (fromConfig)
|
|
38
|
+
return fromConfig;
|
|
39
|
+
return 'mongodb://localhost:27017/app';
|
|
40
|
+
}
|
|
41
|
+
// 3. For server (.env.prod), no fallback — fail
|
|
42
|
+
throw new Error(`MONGODB_URI not found in ${envFile}. Add MONGODB_URI=<your-uri> to ${envFile}.`);
|
|
22
43
|
}
|
|
23
44
|
function formatDoc(doc) {
|
|
24
45
|
const ts = doc['created'] instanceof Date
|
|
@@ -34,14 +55,13 @@ function formatDoc(doc) {
|
|
|
34
55
|
: '';
|
|
35
56
|
return `${ts} ${level} ${message}${meta}${stack}`;
|
|
36
57
|
}
|
|
37
|
-
export async function queryServerLogs(collection, options
|
|
58
|
+
export async function queryServerLogs(collection, options) {
|
|
38
59
|
const limit = options.limit ?? 50;
|
|
39
|
-
const uri = await getMongoUri();
|
|
60
|
+
const uri = await getMongoUri(options.envFile);
|
|
40
61
|
let client = null;
|
|
41
62
|
try {
|
|
42
63
|
client = new MongoClient(uri);
|
|
43
64
|
await client.connect();
|
|
44
|
-
// Extract database name from URI or use default
|
|
45
65
|
const dbName = uri.split('/').pop()?.split('?')[0] || 'main';
|
|
46
66
|
const db = client.db(dbName);
|
|
47
67
|
const col = db.collection(collection);
|
|
@@ -53,7 +73,6 @@ export async function queryServerLogs(collection, options = {}) {
|
|
|
53
73
|
.sort({ created: -1 })
|
|
54
74
|
.limit(limit)
|
|
55
75
|
.toArray();
|
|
56
|
-
// Reverse to show oldest first
|
|
57
76
|
docs.reverse();
|
|
58
77
|
if (docs.length === 0) {
|
|
59
78
|
console.log(`No entries found in ${collection}.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverLogQuery.js","sourceRoot":"","sources":["../../src/cli/serverLogQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"serverLogQuery.js","sourceRoot":"","sources":["../../src/cli/serverLogQuery.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.129";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
package/package.json
CHANGED
package/src/cli/imageGen.ts
CHANGED
|
@@ -29,10 +29,20 @@ export async function runImageGen(
|
|
|
29
29
|
opts: {
|
|
30
30
|
model?: string;
|
|
31
31
|
output?: string;
|
|
32
|
+
aspectRatio?: string;
|
|
32
33
|
},
|
|
33
34
|
): Promise<void> {
|
|
34
35
|
const auth = readAuth();
|
|
35
36
|
|
|
37
|
+
const input: Record<string, unknown> = {
|
|
38
|
+
model: opts.model ?? 'flux_1_schnell',
|
|
39
|
+
prompt,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
if (opts.aspectRatio) {
|
|
43
|
+
input.options = { aspectRatio: opts.aspectRatio };
|
|
44
|
+
}
|
|
45
|
+
|
|
36
46
|
const res = await fetch(`${auth.serverUrl}/request`, {
|
|
37
47
|
method: 'POST',
|
|
38
48
|
headers: {
|
|
@@ -41,10 +51,7 @@ export async function runImageGen(
|
|
|
41
51
|
},
|
|
42
52
|
body: JSON.stringify({
|
|
43
53
|
op: 'imageGen',
|
|
44
|
-
input
|
|
45
|
-
model: opts.model ?? 'flux_1_schnell',
|
|
46
|
-
prompt,
|
|
47
|
-
},
|
|
54
|
+
input,
|
|
48
55
|
sessionId: 'cli',
|
|
49
56
|
}),
|
|
50
57
|
});
|
package/src/cli/index.ts
CHANGED
|
@@ -182,57 +182,15 @@ program
|
|
|
182
182
|
});
|
|
183
183
|
|
|
184
184
|
program
|
|
185
|
-
.command('
|
|
186
|
-
.description('
|
|
187
|
-
.option('--source <source>', 'Filter by source: browser or server')
|
|
188
|
-
.option('--level <level>', 'Filter by level: error, warn, info, log, debug')
|
|
189
|
-
.option('--pattern <pattern>', 'Filter by regex pattern')
|
|
190
|
-
.option('--since <since>', 'Show logs from last duration (5m, 1h, 2d)', '1d')
|
|
191
|
-
.option('--limit <n>', 'Max entries to show', '50')
|
|
192
|
-
.option('--category <category>', 'Filter by [CATEGORY] prefix')
|
|
193
|
-
.option('--tail', 'Follow mode - stream new entries as they arrive')
|
|
194
|
-
.option('--json', 'Output as JSON')
|
|
195
|
-
.action(
|
|
196
|
-
async (opts: {
|
|
197
|
-
source?: string;
|
|
198
|
-
level?: string;
|
|
199
|
-
pattern?: string;
|
|
200
|
-
since?: string;
|
|
201
|
-
limit?: string;
|
|
202
|
-
category?: string;
|
|
203
|
-
tail?: boolean;
|
|
204
|
-
json?: boolean;
|
|
205
|
-
}) => {
|
|
206
|
-
try {
|
|
207
|
-
const { queryLocalLogs } = await import('./logQuery.js');
|
|
208
|
-
await queryLocalLogs({
|
|
209
|
-
source: opts.source as 'browser' | 'server' | undefined,
|
|
210
|
-
level: opts.level,
|
|
211
|
-
pattern: opts.pattern,
|
|
212
|
-
since: opts.since,
|
|
213
|
-
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
214
|
-
category: opts.category,
|
|
215
|
-
tail: opts.tail,
|
|
216
|
-
json: opts.json,
|
|
217
|
-
});
|
|
218
|
-
} catch (e) {
|
|
219
|
-
console.error((e as Error).message);
|
|
220
|
-
process.exit(1);
|
|
221
|
-
}
|
|
222
|
-
},
|
|
223
|
-
);
|
|
224
|
-
|
|
225
|
-
program
|
|
226
|
-
.command('logs:server')
|
|
227
|
-
.description('Query server logs from MongoDB')
|
|
228
|
-
.option('--level <level>', 'Filter by level: error, warn, info, log, debug')
|
|
185
|
+
.command('error:local')
|
|
186
|
+
.description('Query error logs from local MongoDB (errorLog collection)')
|
|
229
187
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
230
188
|
.option('--json', 'Output as JSON')
|
|
231
|
-
.action(async (opts: {
|
|
189
|
+
.action(async (opts: { limit?: string; json?: boolean }) => {
|
|
232
190
|
try {
|
|
233
191
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
234
|
-
await queryServerLogs('
|
|
235
|
-
|
|
192
|
+
await queryServerLogs('errorLog', {
|
|
193
|
+
envFile: '.env',
|
|
236
194
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
237
195
|
json: opts.json,
|
|
238
196
|
});
|
|
@@ -242,55 +200,16 @@ program
|
|
|
242
200
|
}
|
|
243
201
|
});
|
|
244
202
|
|
|
245
|
-
program
|
|
246
|
-
.command('error:local')
|
|
247
|
-
.description('Query local error logs (level=error)')
|
|
248
|
-
.option('--source <source>', 'Filter by source: browser or server')
|
|
249
|
-
.option('--pattern <pattern>', 'Filter by regex pattern')
|
|
250
|
-
.option('--since <since>', 'Show logs from last duration (5m, 1h, 2d)', '1d')
|
|
251
|
-
.option('--limit <n>', 'Max entries to show', '50')
|
|
252
|
-
.option('--category <category>', 'Filter by [CATEGORY] prefix')
|
|
253
|
-
.option('--tail', 'Follow mode - stream new entries as they arrive')
|
|
254
|
-
.option('--json', 'Output as JSON')
|
|
255
|
-
.action(
|
|
256
|
-
async (opts: {
|
|
257
|
-
source?: string;
|
|
258
|
-
pattern?: string;
|
|
259
|
-
since?: string;
|
|
260
|
-
limit?: string;
|
|
261
|
-
category?: string;
|
|
262
|
-
tail?: boolean;
|
|
263
|
-
json?: boolean;
|
|
264
|
-
}) => {
|
|
265
|
-
try {
|
|
266
|
-
const { queryLocalLogs } = await import('./logQuery.js');
|
|
267
|
-
await queryLocalLogs({
|
|
268
|
-
source: opts.source as 'browser' | 'server' | undefined,
|
|
269
|
-
level: 'error',
|
|
270
|
-
pattern: opts.pattern,
|
|
271
|
-
since: opts.since,
|
|
272
|
-
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
273
|
-
category: opts.category,
|
|
274
|
-
tail: opts.tail,
|
|
275
|
-
json: opts.json,
|
|
276
|
-
});
|
|
277
|
-
} catch (e) {
|
|
278
|
-
console.error((e as Error).message);
|
|
279
|
-
process.exit(1);
|
|
280
|
-
}
|
|
281
|
-
},
|
|
282
|
-
);
|
|
283
|
-
|
|
284
203
|
program
|
|
285
204
|
.command('error:server')
|
|
286
|
-
.description('Query
|
|
205
|
+
.description('Query error logs from production MongoDB (errorLog collection)')
|
|
287
206
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
288
207
|
.option('--json', 'Output as JSON')
|
|
289
208
|
.action(async (opts: { limit?: string; json?: boolean }) => {
|
|
290
209
|
try {
|
|
291
210
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
292
211
|
await queryServerLogs('errorLog', {
|
|
293
|
-
|
|
212
|
+
envFile: '.env.prod',
|
|
294
213
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
295
214
|
json: opts.json,
|
|
296
215
|
});
|
|
@@ -302,48 +221,33 @@ program
|
|
|
302
221
|
|
|
303
222
|
program
|
|
304
223
|
.command('perf:local')
|
|
305
|
-
.description('Query local
|
|
306
|
-
.option('--source <source>', 'Filter by source: browser or server')
|
|
307
|
-
.option('--since <since>', 'Show logs from last duration (5m, 1h, 2d)', '1d')
|
|
224
|
+
.description('Query performance metrics from local MongoDB (perfLog collection)')
|
|
308
225
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
309
|
-
.option('--tail', 'Follow mode - stream new entries as they arrive')
|
|
310
226
|
.option('--json', 'Output as JSON')
|
|
311
|
-
.action(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
since: opts.since,
|
|
325
|
-
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
326
|
-
tail: opts.tail,
|
|
327
|
-
json: opts.json,
|
|
328
|
-
});
|
|
329
|
-
} catch (e) {
|
|
330
|
-
console.error((e as Error).message);
|
|
331
|
-
process.exit(1);
|
|
332
|
-
}
|
|
333
|
-
},
|
|
334
|
-
);
|
|
227
|
+
.action(async (opts: { limit?: string; json?: boolean }) => {
|
|
228
|
+
try {
|
|
229
|
+
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
230
|
+
await queryServerLogs('perfLog', {
|
|
231
|
+
envFile: '.env',
|
|
232
|
+
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
233
|
+
json: opts.json,
|
|
234
|
+
});
|
|
235
|
+
} catch (e) {
|
|
236
|
+
console.error((e as Error).message);
|
|
237
|
+
process.exit(1);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
335
240
|
|
|
336
241
|
program
|
|
337
242
|
.command('perf:server')
|
|
338
|
-
.description(
|
|
339
|
-
'Query server performance metrics from MongoDB (perfLog collection)',
|
|
340
|
-
)
|
|
243
|
+
.description('Query performance metrics from production MongoDB (perfLog collection)')
|
|
341
244
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
342
245
|
.option('--json', 'Output as JSON')
|
|
343
246
|
.action(async (opts: { limit?: string; json?: boolean }) => {
|
|
344
247
|
try {
|
|
345
248
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
346
249
|
await queryServerLogs('perfLog', {
|
|
250
|
+
envFile: '.env.prod',
|
|
347
251
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
348
252
|
json: opts.json,
|
|
349
253
|
});
|
|
@@ -354,16 +258,34 @@ program
|
|
|
354
258
|
});
|
|
355
259
|
|
|
356
260
|
program
|
|
357
|
-
.command('feedback')
|
|
358
|
-
.description(
|
|
359
|
-
|
|
360
|
-
)
|
|
261
|
+
.command('feedback:local')
|
|
262
|
+
.description('Query feedback submissions from local MongoDB (feedbackReport collection)')
|
|
263
|
+
.option('--limit <n>', 'Max entries to show', '50')
|
|
264
|
+
.option('--json', 'Output as JSON')
|
|
265
|
+
.action(async (opts: { limit?: string; json?: boolean }) => {
|
|
266
|
+
try {
|
|
267
|
+
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
268
|
+
await queryServerLogs('feedbackReport', {
|
|
269
|
+
envFile: '.env',
|
|
270
|
+
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
271
|
+
json: opts.json,
|
|
272
|
+
});
|
|
273
|
+
} catch (e) {
|
|
274
|
+
console.error((e as Error).message);
|
|
275
|
+
process.exit(1);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
program
|
|
280
|
+
.command('feedback:server')
|
|
281
|
+
.description('Query feedback submissions from production MongoDB (feedbackReport collection)')
|
|
361
282
|
.option('--limit <n>', 'Max entries to show', '50')
|
|
362
283
|
.option('--json', 'Output as JSON')
|
|
363
284
|
.action(async (opts: { limit?: string; json?: boolean }) => {
|
|
364
285
|
try {
|
|
365
286
|
const { queryServerLogs } = await import('./serverLogQuery.js');
|
|
366
287
|
await queryServerLogs('feedbackReport', {
|
|
288
|
+
envFile: '.env.prod',
|
|
367
289
|
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
368
290
|
json: opts.json,
|
|
369
291
|
});
|
|
@@ -373,6 +295,47 @@ program
|
|
|
373
295
|
}
|
|
374
296
|
});
|
|
375
297
|
|
|
298
|
+
program
|
|
299
|
+
.command('dev-logs')
|
|
300
|
+
.description('Show local dev logs from JSONL files')
|
|
301
|
+
.option('--source <source>', 'Filter by source: browser or server')
|
|
302
|
+
.option('--level <level>', 'Filter by level: error, warn, info, log, debug')
|
|
303
|
+
.option('--pattern <pattern>', 'Filter by regex pattern')
|
|
304
|
+
.option('--since <since>', 'Show logs from last duration (5m, 1h, 2d)', '1d')
|
|
305
|
+
.option('--limit <n>', 'Max entries to show', '50')
|
|
306
|
+
.option('--category <category>', 'Filter by [CATEGORY] prefix')
|
|
307
|
+
.option('--tail', 'Follow mode - stream new entries as they arrive')
|
|
308
|
+
.option('--json', 'Output as JSON')
|
|
309
|
+
.action(
|
|
310
|
+
async (opts: {
|
|
311
|
+
source?: string;
|
|
312
|
+
level?: string;
|
|
313
|
+
pattern?: string;
|
|
314
|
+
since?: string;
|
|
315
|
+
limit?: string;
|
|
316
|
+
category?: string;
|
|
317
|
+
tail?: boolean;
|
|
318
|
+
json?: boolean;
|
|
319
|
+
}) => {
|
|
320
|
+
try {
|
|
321
|
+
const { queryLocalLogs } = await import('./logQuery.js');
|
|
322
|
+
await queryLocalLogs({
|
|
323
|
+
source: opts.source as 'browser' | 'server' | undefined,
|
|
324
|
+
level: opts.level,
|
|
325
|
+
pattern: opts.pattern,
|
|
326
|
+
since: opts.since,
|
|
327
|
+
limit: opts.limit ? parseInt(opts.limit, 10) : 50,
|
|
328
|
+
category: opts.category,
|
|
329
|
+
tail: opts.tail,
|
|
330
|
+
json: opts.json,
|
|
331
|
+
});
|
|
332
|
+
} catch (e) {
|
|
333
|
+
console.error((e as Error).message);
|
|
334
|
+
process.exit(1);
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
);
|
|
338
|
+
|
|
376
339
|
program
|
|
377
340
|
.command('auth:create-account')
|
|
378
341
|
.description('Create a user account directly in MongoDB (no OAuth required)')
|
|
@@ -486,6 +449,10 @@ program
|
|
|
486
449
|
.description('Generate an image using AI (requires ugly-app login)')
|
|
487
450
|
.option('--prompt <prompt>', 'Image prompt (alternative to positional arg)')
|
|
488
451
|
.option('--model <model>', 'Model to use (default: flux_1_schnell)')
|
|
452
|
+
.option(
|
|
453
|
+
'--aspect-ratio <size>',
|
|
454
|
+
'Aspect ratio: square, portrait_4_3, portrait_16_9, portrait_21_9, landscape_4_3, landscape_16_9, landscape_21_9',
|
|
455
|
+
)
|
|
489
456
|
.option('--output <path>', 'Save image to file instead of printing URL')
|
|
490
457
|
.action(
|
|
491
458
|
async (
|
|
@@ -493,6 +460,7 @@ program
|
|
|
493
460
|
opts?: {
|
|
494
461
|
prompt?: string;
|
|
495
462
|
model?: string;
|
|
463
|
+
aspectRatio?: string;
|
|
496
464
|
output?: string;
|
|
497
465
|
},
|
|
498
466
|
) => {
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { MongoClient } from 'mongodb';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { computeEnvVars, readUglyAppConfig } from './uglyappConfig.js';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
// Try to read from .env file in cwd
|
|
10
|
-
const envPath = path.join(process.cwd(), '.env');
|
|
6
|
+
/** Try to read MONGODB_URI from an env file. Returns null if not found. */
|
|
7
|
+
async function readUriFromEnvFile(envFile: string): Promise<string | null> {
|
|
8
|
+
const envPath = path.join(process.cwd(), envFile);
|
|
11
9
|
try {
|
|
12
10
|
const content = await fs.readFile(envPath, 'utf-8');
|
|
13
11
|
for (const line of content.split('\n')) {
|
|
@@ -15,10 +13,35 @@ async function getMongoUri(): Promise<string> {
|
|
|
15
13
|
if (match) return match[1].replace(/^['"]|['"]$/g, '');
|
|
16
14
|
}
|
|
17
15
|
} catch {
|
|
18
|
-
//
|
|
16
|
+
// File doesn't exist or isn't readable
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Derive MONGODB_URI from .uglyapp config (port-offset-based local Docker). */
|
|
22
|
+
function readUriFromUglyAppConfig(): string | null {
|
|
23
|
+
const config = readUglyAppConfig(process.cwd());
|
|
24
|
+
if (!config) return null;
|
|
25
|
+
const envVars = computeEnvVars(config);
|
|
26
|
+
return envVars.MONGODB_URI ?? null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async function getMongoUri(envFile: string): Promise<string> {
|
|
30
|
+
// 1. Try the specified env file
|
|
31
|
+
const fromEnv = await readUriFromEnvFile(envFile);
|
|
32
|
+
if (fromEnv) return fromEnv;
|
|
33
|
+
|
|
34
|
+
// 2. For local (.env), fall back to .uglyapp config or default
|
|
35
|
+
if (envFile === '.env') {
|
|
36
|
+
const fromConfig = readUriFromUglyAppConfig();
|
|
37
|
+
if (fromConfig) return fromConfig;
|
|
38
|
+
return 'mongodb://localhost:27017/app';
|
|
19
39
|
}
|
|
20
40
|
|
|
21
|
-
|
|
41
|
+
// 3. For server (.env.prod), no fallback — fail
|
|
42
|
+
throw new Error(
|
|
43
|
+
`MONGODB_URI not found in ${envFile}. Add MONGODB_URI=<your-uri> to ${envFile}.`,
|
|
44
|
+
);
|
|
22
45
|
}
|
|
23
46
|
|
|
24
47
|
function formatDoc(doc: Record<string, unknown>): string {
|
|
@@ -38,18 +61,17 @@ function formatDoc(doc: Record<string, unknown>): string {
|
|
|
38
61
|
}
|
|
39
62
|
|
|
40
63
|
export async function queryServerLogs(
|
|
41
|
-
collection: 'errorLog' | '
|
|
42
|
-
options: { limit?: number; level?: string; json?: boolean }
|
|
64
|
+
collection: 'errorLog' | 'perfLog' | 'feedbackReport',
|
|
65
|
+
options: { envFile: string; limit?: number; level?: string; json?: boolean },
|
|
43
66
|
): Promise<void> {
|
|
44
67
|
const limit = options.limit ?? 50;
|
|
45
|
-
const uri = await getMongoUri();
|
|
68
|
+
const uri = await getMongoUri(options.envFile);
|
|
46
69
|
|
|
47
70
|
let client: MongoClient | null = null;
|
|
48
71
|
try {
|
|
49
72
|
client = new MongoClient(uri);
|
|
50
73
|
await client.connect();
|
|
51
74
|
|
|
52
|
-
// Extract database name from URI or use default
|
|
53
75
|
const dbName = uri.split('/').pop()?.split('?')[0] || 'main';
|
|
54
76
|
const db = client.db(dbName);
|
|
55
77
|
const col = db.collection(collection);
|
|
@@ -63,7 +85,6 @@ export async function queryServerLogs(
|
|
|
63
85
|
.limit(limit)
|
|
64
86
|
.toArray();
|
|
65
87
|
|
|
66
|
-
// Reverse to show oldest first
|
|
67
88
|
docs.reverse();
|
|
68
89
|
|
|
69
90
|
if (docs.length === 0) {
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.129";
|
|
@@ -1,35 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: check-errors
|
|
3
|
-
description: Query recent error logs from MongoDB
|
|
3
|
+
description: Query recent error logs from MongoDB (requires local or server parameter)
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Checking Error Logs
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
db.errorLog.find({}, {message:1, stack:1, userId:1, created:1})
|
|
13
|
-
.sort({created:-1}).limit(20).pretty()
|
|
14
|
-
"
|
|
15
|
-
```
|
|
9
|
+
**Required parameter: `local` or `server`**
|
|
10
|
+
|
|
11
|
+
If the user did not specify `local` or `server`, stop and ask which one before proceeding.
|
|
16
12
|
|
|
17
|
-
##
|
|
13
|
+
## Local (development MongoDB via .env)
|
|
18
14
|
```bash
|
|
19
|
-
|
|
20
|
-
db.errorLog.aggregate([
|
|
21
|
-
{ \$group: { _id: '\$message', count: { \$sum: 1 }, last: { \$max: '\$created' } } },
|
|
22
|
-
{ \$sort: { count: -1 } },
|
|
23
|
-
{ \$limit: 10 }
|
|
24
|
-
]).pretty()
|
|
25
|
-
"
|
|
15
|
+
npm run error
|
|
26
16
|
```
|
|
27
17
|
|
|
28
|
-
##
|
|
18
|
+
## Server (production MongoDB via .env.prod)
|
|
29
19
|
```bash
|
|
30
|
-
|
|
31
|
-
db.errorLog.find({level:'error'}).sort({created:-1}).limit(10).pretty()
|
|
32
|
-
"
|
|
20
|
+
npm run error:server
|
|
33
21
|
```
|
|
34
22
|
|
|
35
23
|
## Tips
|
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: check-feedback
|
|
3
|
-
description: Query user feedback logs from MongoDB
|
|
3
|
+
description: Query user feedback logs from MongoDB (requires local or server parameter)
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Checking Feedback Logs
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**Required parameter: `local` or `server`**
|
|
10
|
+
|
|
11
|
+
If the user did not specify `local` or `server`, stop and ask which one before proceeding.
|
|
12
|
+
|
|
13
|
+
## Local (development MongoDB via .env)
|
|
10
14
|
```bash
|
|
11
|
-
|
|
12
|
-
db.feedbackLog.find().sort({created:-1}).limit(20).pretty()
|
|
13
|
-
"
|
|
15
|
+
npm run feedback
|
|
14
16
|
```
|
|
15
17
|
|
|
16
|
-
##
|
|
18
|
+
## Server (production MongoDB via .env.prod)
|
|
17
19
|
```bash
|
|
18
|
-
|
|
19
|
-
db.feedbackLog.aggregate([
|
|
20
|
-
{ \$group: { _id: '\$type', count: { \$sum: 1 }, messages: { \$push: '\$message' } } }
|
|
21
|
-
]).pretty()
|
|
22
|
-
"
|
|
20
|
+
npm run feedback:server
|
|
23
21
|
```
|
|
24
22
|
|
|
25
23
|
## Types: `bug`, `design`, `feature`
|
|
@@ -1,27 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: check-perf
|
|
3
|
-
description: Query performance logs for slow operations
|
|
3
|
+
description: Query performance logs for slow operations (requires local or server parameter)
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Checking Performance Logs
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**Required parameter: `local` or `server`**
|
|
10
|
+
|
|
11
|
+
If the user did not specify `local` or `server`, stop and ask which one before proceeding.
|
|
12
|
+
|
|
13
|
+
## Local (development MongoDB via .env)
|
|
10
14
|
```bash
|
|
11
|
-
|
|
12
|
-
db.perfLog.aggregate([
|
|
13
|
-
{ \$group: { _id: '\$operation', avgMs: { \$avg: '\$durationMs' }, maxMs: { \$max: '\$durationMs' }, count: { \$sum: 1 } } },
|
|
14
|
-
{ \$sort: { avgMs: -1 } },
|
|
15
|
-
{ \$limit: 10 }
|
|
16
|
-
]).pretty()
|
|
17
|
-
"
|
|
15
|
+
npm run perf
|
|
18
16
|
```
|
|
19
17
|
|
|
20
|
-
##
|
|
18
|
+
## Server (production MongoDB via .env.prod)
|
|
21
19
|
```bash
|
|
22
|
-
|
|
23
|
-
db.perfLog.find({durationMs:{\$gt:500}}).sort({created:-1}).limit(20).pretty()
|
|
24
|
-
"
|
|
20
|
+
npm run perf:server
|
|
25
21
|
```
|
|
26
22
|
|
|
27
23
|
# Notes
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fix-errors
|
|
3
|
-
description: Fetch
|
|
3
|
+
description: Fetch errors and fix them (requires local or server parameter)
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Fetch
|
|
7
|
+
Fetch errors and fix them.
|
|
8
8
|
|
|
9
|
+
**Required parameter: `local` or `server`**
|
|
10
|
+
|
|
11
|
+
If the user did not specify `local` or `server`, stop and ask which one before proceeding.
|
|
12
|
+
|
|
13
|
+
## Local (development MongoDB via .env)
|
|
14
|
+
Run: `npm run error`
|
|
15
|
+
|
|
16
|
+
## Server (production MongoDB via .env.prod)
|
|
9
17
|
Run: `npm run error:server`
|
|
10
18
|
|
|
11
|
-
|
|
19
|
+
For each error:
|
|
12
20
|
1. Find the relevant source file
|
|
13
21
|
2. Understand the root cause
|
|
14
22
|
3. Fix the code
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fix-feedback
|
|
3
|
-
description: Fetch user feedback and fix reported issues
|
|
3
|
+
description: Fetch user feedback and fix reported issues (requires local or server parameter)
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
Fetch user feedback and fix reported issues.
|
|
8
8
|
|
|
9
|
+
**Required parameter: `local` or `server`**
|
|
10
|
+
|
|
11
|
+
If the user did not specify `local` or `server`, stop and ask which one before proceeding.
|
|
12
|
+
|
|
13
|
+
## Local (development MongoDB via .env)
|
|
9
14
|
Run: `npm run feedback`
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
## Server (production MongoDB via .env.prod)
|
|
17
|
+
Run: `npm run feedback:server`
|
|
18
|
+
|
|
19
|
+
This fetches recent user feedback from MongoDB. For each piece of feedback:
|
|
12
20
|
1. Understand the user's issue or request
|
|
13
21
|
2. Implement the fix or feature
|
|
14
22
|
3. Run `npm run build` to verify it compiles
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fix-perf
|
|
3
|
-
description: Fetch performance issues and optimize slow paths
|
|
3
|
+
description: Fetch performance issues and optimize slow paths (requires local or server parameter)
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
Fetch performance issues and optimize slow paths.
|
|
8
8
|
|
|
9
|
+
**Required parameter: `local` or `server`**
|
|
10
|
+
|
|
11
|
+
If the user did not specify `local` or `server`, stop and ask which one before proceeding.
|
|
12
|
+
|
|
13
|
+
## Local (development MongoDB via .env)
|
|
14
|
+
Run: `npm run perf`
|
|
15
|
+
|
|
16
|
+
## Server (production MongoDB via .env.prod)
|
|
9
17
|
Run: `npm run perf:server`
|
|
10
18
|
|
|
11
|
-
|
|
19
|
+
For each slow path:
|
|
12
20
|
1. Find the source of the slowdown
|
|
13
21
|
2. Optimize the code (avoid blocking operations, add caching, etc.)
|
|
14
22
|
3. Run `npm run build` to verify
|
package/templates/CLAUDE.md
CHANGED
|
@@ -15,7 +15,10 @@ Full API reference: https://www.npmjs.com/package/ugly-app
|
|
|
15
15
|
- `npm run db:migrate` — Run pending migrations
|
|
16
16
|
- `npm run textGen -- "your prompt"` — Generate text using AI from the CLI
|
|
17
17
|
- `npm run imageGen -- "your prompt"` — Generate an image using AI (prints URL)
|
|
18
|
-
- `npm run
|
|
18
|
+
- `npm run error` / `npm run error:server` — Query error logs (local / production)
|
|
19
|
+
- `npm run perf` / `npm run perf:server` — Query perf logs (local / production)
|
|
20
|
+
- `npm run feedback` / `npm run feedback:server` — Query feedback (local / production)
|
|
21
|
+
- `npm run dev-logs` — Show local dev logs from JSONL files
|
|
19
22
|
|
|
20
23
|
## Adding an endpoint
|
|
21
24
|
1. Define in `shared/api.ts` using `req()` (public) or `authReq()` (authenticated) + Zod schemas
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
Button,
|
|
4
|
+
callImageGen,
|
|
5
|
+
callTextGen,
|
|
4
6
|
Card,
|
|
5
7
|
Input,
|
|
6
8
|
PageLayout,
|
|
7
|
-
useApp,
|
|
8
9
|
} from 'ugly-app/client';
|
|
9
10
|
import type { ImageGenModel, TextGenModel } from 'ugly-app/shared';
|
|
10
11
|
import { imageGenModels, textGenModels } from 'ugly-app/shared';
|
|
@@ -21,7 +22,6 @@ function fmt(ms: number): string {
|
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
export default function AITestPage(): React.ReactElement {
|
|
24
|
-
const { socket } = useApp();
|
|
25
25
|
const [mode, setMode] = useState<Mode>('text');
|
|
26
26
|
const [prompt, setPrompt] = useState('');
|
|
27
27
|
const [textModel, setTextModel] = useState<TextGenModel>(textGenModels[0]!);
|
|
@@ -51,18 +51,18 @@ export default function AITestPage(): React.ReactElement {
|
|
|
51
51
|
|
|
52
52
|
try {
|
|
53
53
|
if (mode === 'text') {
|
|
54
|
-
const
|
|
54
|
+
const text = await callTextGen({
|
|
55
55
|
model: textModel,
|
|
56
56
|
messages: [{ role: 'user', content: prompt }],
|
|
57
|
-
})
|
|
57
|
+
});
|
|
58
58
|
const elapsed = Date.now() - started;
|
|
59
59
|
addLog(`Done in ${fmt(elapsed)} — ${text.length} chars`, 'ok');
|
|
60
60
|
setResult(text);
|
|
61
61
|
} else {
|
|
62
|
-
const
|
|
62
|
+
const url = await callImageGen({
|
|
63
63
|
model: imageModel,
|
|
64
64
|
prompt,
|
|
65
|
-
})
|
|
65
|
+
});
|
|
66
66
|
const elapsed = Date.now() - started;
|
|
67
67
|
addLog(`Done in ${fmt(elapsed)}`, 'ok');
|
|
68
68
|
setImageUrl(url);
|
package/templates/package.json
CHANGED
|
@@ -11,18 +11,18 @@
|
|
|
11
11
|
"db:init": "ugly-app db:init",
|
|
12
12
|
"deploy:single": "ugly-app deploy:single",
|
|
13
13
|
"deploy:multi": "ugly-app deploy:multi",
|
|
14
|
-
"logs": "ugly-app logs:local",
|
|
15
|
-
"logs:server": "ugly-app logs:server",
|
|
16
14
|
"error": "ugly-app error:local",
|
|
17
15
|
"error:server": "ugly-app error:server",
|
|
18
16
|
"perf": "ugly-app perf:local",
|
|
19
17
|
"perf:server": "ugly-app perf:server",
|
|
18
|
+
"feedback": "ugly-app feedback:local",
|
|
19
|
+
"feedback:server": "ugly-app feedback:server",
|
|
20
|
+
"dev-logs": "ugly-app dev-logs",
|
|
20
21
|
"start": "npx kill-port ${PORT:-3000} && npx tsx --env-file=.env server/index.ts",
|
|
21
22
|
"deploy": "npm run build && npm run start",
|
|
22
23
|
"test": "vitest run",
|
|
23
24
|
"test:coverage": "vitest run --coverage",
|
|
24
25
|
"test:e2e": "playwright test",
|
|
25
|
-
"feedback": "ugly-app feedback",
|
|
26
26
|
"textGen": "ugly-app textGen",
|
|
27
27
|
"imageGen": "ugly-app imageGen",
|
|
28
28
|
"prepare": "husky",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"nanoid": "^5.1.5",
|
|
37
37
|
"react": "^18.3.1",
|
|
38
38
|
"react-dom": "^18.3.1",
|
|
39
|
-
"three": "^0.
|
|
40
|
-
"ugly-app": "^0.1.
|
|
39
|
+
"three": "^0.183.2",
|
|
40
|
+
"ugly-app": "^0.1.126"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/html2canvas": "^1.0.0",
|