ugly-app 0.1.148 → 0.1.150

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/cli/feedbackResolve.d.ts +7 -0
  2. package/dist/cli/feedbackResolve.d.ts.map +1 -0
  3. package/dist/cli/feedbackResolve.js +40 -0
  4. package/dist/cli/feedbackResolve.js.map +1 -0
  5. package/dist/cli/feedbackSubmit.d.ts +12 -0
  6. package/dist/cli/feedbackSubmit.d.ts.map +1 -0
  7. package/dist/cli/feedbackSubmit.js +75 -0
  8. package/dist/cli/feedbackSubmit.js.map +1 -0
  9. package/dist/cli/index.js +61 -0
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/cli/url.d.ts +2 -0
  12. package/dist/cli/url.d.ts.map +1 -0
  13. package/dist/cli/url.js +7 -0
  14. package/dist/cli/url.js.map +1 -0
  15. package/dist/cli/version.d.ts +1 -1
  16. package/dist/cli/version.js +1 -1
  17. package/dist/shared/FrameworkRequests.d.ts +5 -0
  18. package/dist/shared/FrameworkRequests.d.ts.map +1 -1
  19. package/dist/shared/FrameworkRequests.js +5 -1
  20. package/dist/shared/FrameworkRequests.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/cli/feedbackResolve.ts +57 -0
  23. package/src/cli/feedbackSubmit.ts +102 -0
  24. package/src/cli/index.ts +68 -0
  25. package/src/cli/url.ts +7 -0
  26. package/src/cli/version.ts +1 -1
  27. package/src/shared/FrameworkRequests.ts +6 -1
  28. package/templates/.claude/skills/bot-swarm/SKILL.md +175 -67
  29. package/templates/CLAUDE.md +3 -0
  30. package/templates/bots/feedback/active/.gitkeep +0 -0
  31. package/templates/bots/feedback/retired/.gitkeep +0 -0
  32. package/templates/bots/journal/README.md +0 -0
  33. package/templates/bots/journal/cycles/.gitkeep +0 -0
  34. package/templates/bots/journal/cycles/screenshots/.gitkeep +0 -0
  35. package/templates/bots/maintain/memory.md +0 -0
  36. package/templates/bots/manager/memory.md +0 -0
  37. package/templates/gitignore +3 -1
@@ -0,0 +1,7 @@
1
+ export interface FeedbackResolveOptions {
2
+ feedbackId: string;
3
+ status: 'resolved' | 'declined';
4
+ resolution: string;
5
+ }
6
+ export declare function resolveFeedback(opts: FeedbackResolveOptions): Promise<void>;
7
+ //# sourceMappingURL=feedbackResolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedbackResolve.d.ts","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAuBD,wBAAsB,eAAe,CACnC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -0,0 +1,40 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { getLocalUrl } from './url.js';
4
+ function readTokenFromEnv() {
5
+ let envContent = '';
6
+ try {
7
+ envContent = fs.readFileSync(path.join(process.cwd(), '.env'), 'utf-8');
8
+ }
9
+ catch {
10
+ throw new Error('No .env file found. Run "npx ugly-app login" first to set up UGLY_BOT_TOKEN.');
11
+ }
12
+ const match = envContent.match(/^UGLY_BOT_TOKEN=(.+)$/m);
13
+ if (!match?.[1]) {
14
+ throw new Error('UGLY_BOT_TOKEN not found in .env. Run "npx ugly-app login" first.');
15
+ }
16
+ return match[1];
17
+ }
18
+ export async function resolveFeedback(opts) {
19
+ const baseUrl = getLocalUrl(process.cwd());
20
+ const token = readTokenFromEnv();
21
+ const res = await fetch(`${baseUrl}/api/resolveFeedback`, {
22
+ method: 'POST',
23
+ headers: {
24
+ 'Authorization': `Bearer ${token}`,
25
+ 'Content-Type': 'application/json',
26
+ },
27
+ body: JSON.stringify({
28
+ input: {
29
+ feedbackId: opts.feedbackId,
30
+ status: opts.status,
31
+ resolution: opts.resolution,
32
+ },
33
+ }),
34
+ });
35
+ if (!res.ok) {
36
+ const body = await res.text().catch(() => '');
37
+ throw new Error(`Failed to resolve feedback: ${res.status} ${body}`);
38
+ }
39
+ }
40
+ //# sourceMappingURL=feedbackResolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedbackResolve.js","sourceRoot":"","sources":["../../src/cli/feedbackResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQvC,SAAS,gBAAgB;IACvB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,UAAU,GAAG,EAAE,CAAC,YAAY,CAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAChC,OAAO,CACR,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA4B;IAE5B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IAEjC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,sBAAsB,EAAE;QACxD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,KAAK,EAAE;YAClC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,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"}
@@ -0,0 +1,12 @@
1
+ export interface FeedbackSubmitOptions {
2
+ type: 'bug' | 'feature' | 'design';
3
+ message: string;
4
+ url?: string;
5
+ screenshot?: string;
6
+ token: string;
7
+ logs?: string;
8
+ }
9
+ export declare function submitFeedback(opts: FeedbackSubmitOptions): Promise<{
10
+ id: string;
11
+ }>;
12
+ //# sourceMappingURL=feedbackSubmit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedbackSubmit.d.ts","sourceRoot":"","sources":["../../src/cli/feedbackSubmit.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAgDD,wBAAsB,cAAc,CAClC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAwCzB"}
@@ -0,0 +1,75 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { getLocalUrl } from './url.js';
4
+ async function uploadScreenshot(baseUrl, token, filePath) {
5
+ const ext = path.extname(filePath).slice(1) || 'png';
6
+ const key = `feedback/${Date.now()}.${ext}`;
7
+ // Check file exists before requesting upload URL
8
+ if (!fs.existsSync(filePath)) {
9
+ throw new Error(`Screenshot file not found: ${filePath}`);
10
+ }
11
+ // Get presigned upload URL
12
+ const presignRes = await fetch(`${baseUrl}/api/uploadUrl`, {
13
+ method: 'POST',
14
+ headers: {
15
+ 'Authorization': `Bearer ${token}`,
16
+ 'Content-Type': 'application/json',
17
+ },
18
+ body: JSON.stringify({
19
+ input: { key, contentType: `image/${ext}` },
20
+ }),
21
+ });
22
+ if (!presignRes.ok) {
23
+ throw new Error(`Failed to get upload URL: ${presignRes.status}`);
24
+ }
25
+ const { uploadUrl, resultUrl } = (await presignRes.json());
26
+ // Upload the file
27
+ const fileBuffer = fs.readFileSync(filePath);
28
+ const uploadRes = await fetch(uploadUrl, {
29
+ method: 'PUT',
30
+ headers: { 'Content-Type': `image/${ext}` },
31
+ body: fileBuffer,
32
+ });
33
+ if (!uploadRes.ok) {
34
+ throw new Error(`Failed to upload screenshot: ${uploadRes.status}`);
35
+ }
36
+ return resultUrl;
37
+ }
38
+ export async function submitFeedback(opts) {
39
+ const baseUrl = getLocalUrl(process.cwd());
40
+ let screenshotUri;
41
+ if (opts.screenshot) {
42
+ screenshotUri = await uploadScreenshot(baseUrl, opts.token, opts.screenshot);
43
+ }
44
+ let previousLogs;
45
+ if (opts.logs) {
46
+ try {
47
+ previousLogs = JSON.parse(opts.logs);
48
+ }
49
+ catch {
50
+ throw new Error(`--logs must be valid JSON: ${opts.logs.slice(0, 100)}`);
51
+ }
52
+ }
53
+ const res = await fetch(`${baseUrl}/api/submitFeedback`, {
54
+ method: 'POST',
55
+ headers: {
56
+ 'Authorization': `Bearer ${opts.token}`,
57
+ 'Content-Type': 'application/json',
58
+ },
59
+ body: JSON.stringify({
60
+ input: {
61
+ type: opts.type,
62
+ message: opts.message,
63
+ url: opts.url ?? baseUrl,
64
+ screenshotUri,
65
+ previousLogs,
66
+ },
67
+ }),
68
+ });
69
+ if (!res.ok) {
70
+ const body = await res.text().catch(() => '');
71
+ throw new Error(`Failed to submit feedback: ${res.status} ${body}`);
72
+ }
73
+ return (await res.json());
74
+ }
75
+ //# sourceMappingURL=feedbackSubmit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedbackSubmit.js","sourceRoot":"","sources":["../../src/cli/feedbackSubmit.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -283,6 +283,54 @@ program
283
283
  process.exit(1);
284
284
  }
285
285
  });
286
+ program
287
+ .command('feedback:submit')
288
+ .description('Submit feedback to the local dev server')
289
+ .requiredOption('--type <type>', 'Feedback type: bug, feature, or design')
290
+ .requiredOption('--message <message>', 'Feedback description')
291
+ .requiredOption('--token <token>', 'Bot auth token (Bearer)')
292
+ .option('--url <url>', 'Page URL the feedback is about')
293
+ .option('--screenshot <path>', 'Path to screenshot image file')
294
+ .option('--logs <json>', 'Console logs as JSON array of {timestamp, level, message}')
295
+ .action(async (opts) => {
296
+ try {
297
+ const { submitFeedback } = await import('./feedbackSubmit.js');
298
+ const result = await submitFeedback({
299
+ type: opts.type,
300
+ message: opts.message,
301
+ token: opts.token,
302
+ url: opts.url,
303
+ screenshot: opts.screenshot,
304
+ logs: opts.logs,
305
+ });
306
+ console.log(JSON.stringify(result, null, 2));
307
+ }
308
+ catch (e) {
309
+ console.error(e.message);
310
+ process.exit(1);
311
+ }
312
+ });
313
+ program
314
+ .command('feedback:resolve')
315
+ .description('Resolve or decline a feedback item on the local dev server')
316
+ .requiredOption('--id <feedbackId>', 'Feedback report ID')
317
+ .requiredOption('--status <status>', 'New status: resolved or declined')
318
+ .requiredOption('--resolution <text>', 'Resolution message')
319
+ .action(async (opts) => {
320
+ try {
321
+ const { resolveFeedback } = await import('./feedbackResolve.js');
322
+ await resolveFeedback({
323
+ feedbackId: opts.id,
324
+ status: opts.status,
325
+ resolution: opts.resolution,
326
+ });
327
+ console.log('Feedback resolved.');
328
+ }
329
+ catch (e) {
330
+ console.error(e.message);
331
+ process.exit(1);
332
+ }
333
+ });
286
334
  program
287
335
  .command('dev-logs')
288
336
  .description('Show local dev logs from JSONL files')
@@ -387,6 +435,19 @@ program
387
435
  process.exit(1);
388
436
  }
389
437
  });
438
+ program
439
+ .command('url')
440
+ .description('Print the local dev server URL (from .uglyapp config)')
441
+ .action(async () => {
442
+ try {
443
+ const { getLocalUrl } = await import('./url.js');
444
+ console.log(getLocalUrl(process.cwd()));
445
+ }
446
+ catch (e) {
447
+ console.error(e.message);
448
+ process.exit(1);
449
+ }
450
+ });
390
451
  program
391
452
  .command('upgrade')
392
453
  .description('Upgrade framework config files to the current ugly-app version')
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export declare function getLocalUrl(cwd: string): string;
2
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/cli/url.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C"}
@@ -0,0 +1,7 @@
1
+ import { computePorts, readUglyAppConfig } from './uglyappConfig.js';
2
+ export function getLocalUrl(cwd) {
3
+ const config = readUglyAppConfig(cwd);
4
+ const port = config ? computePorts(config.portStart).PORT : 3000;
5
+ return `http://localhost:${port}`;
6
+ }
7
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/cli/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAErE,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,OAAO,oBAAoB,IAAI,EAAE,CAAC;AACpC,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.148";
1
+ export declare const CLI_VERSION = "0.1.150";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.148";
2
+ export const CLI_VERSION = "0.1.150";
3
3
  //# sourceMappingURL=version.js.map
@@ -28,6 +28,11 @@ export declare const frameworkRequests: {
28
28
  }, {
29
29
  id: string;
30
30
  }>;
31
+ resolveFeedback: import("./Api.js").AuthRequestDef<{
32
+ feedbackId: string;
33
+ status: "resolved" | "declined";
34
+ resolution: string;
35
+ }, Record<string, never>>;
31
36
  initSession: import("./Api.js").RequestDef<{
32
37
  sessionId: string;
33
38
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"FrameworkRequests.d.ts","sourceRoot":"","sources":["../../src/shared/FrameworkRequests.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6I5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC"}
1
+ {"version":3,"file":"FrameworkRequests.d.ts","sourceRoot":"","sources":["../../src/shared/FrameworkRequests.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJ5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { authReq, defineRequests, req, z } from './Api.js';
2
- import { SubmitFeedbackInput } from './FeedbackReport.js';
2
+ import { ResolveFeedbackInput, SubmitFeedbackInput } from './FeedbackReport.js';
3
3
  export const frameworkRequests = defineRequests({
4
4
  textGen: authReq({
5
5
  input: z.object({
@@ -25,6 +25,10 @@ export const frameworkRequests = defineRequests({
25
25
  output: z.object({ id: z.string() }),
26
26
  rateLimit: { max: 20, window: 60 },
27
27
  }),
28
+ resolveFeedback: authReq({
29
+ input: ResolveFeedbackInput,
30
+ output: z.object({}),
31
+ }),
28
32
  initSession: req({
29
33
  input: z.object({ sessionId: z.string() }),
30
34
  output: z.object({ branches: z.record(z.string(), z.string()) }),
@@ -1 +1 @@
1
- {"version":3,"file":"FrameworkRequests.js","sourceRoot":"","sources":["../../src/shared/FrameworkRequests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAA6B;YAC5C,QAAQ,EAAE,CAAC,CAAC,KAAK,CACf,CAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;aACpB,CAAC,CACH;SACF,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;KACnC,CAAC;IAEF,QAAQ,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAA8B;YAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;KACnC,CAAC;IAEF,cAAc,EAAE,OAAO,CAAC;QACtB,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;KACnC,CAAC;IAEF,WAAW,EAAE,GAAG,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;KACjE,CAAC;IAEF,YAAY,EAAE,GAAG,CAAC;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;SAClE,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;KAC1C,CAAC;IAEF,KAAK,EAAE,OAAO,CAAC;QACb,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC7B,CAAC;KACH,CAAC;IAEF,UAAU,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QACpE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;gBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAChC,SAAS,EAAE,CAAC;qBACT,MAAM,CAAC;oBACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC9B,CAAC;qBACD,QAAQ,EAAE;aACd,CAAC,CACH;YACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SACxC,CAAC;QACF,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;KACnC,CAAC;IAEF,aAAa,EAAE,OAAO,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC5B,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACzC,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;KACnC,CAAC;IAEF,aAAa,EAAE,OAAO,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;gBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAChC,SAAS,EAAE,CAAC;qBACT,MAAM,CAAC;oBACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC9B,CAAC;qBACD,QAAQ,EAAE;aACd,CAAC,CACH;YACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SACxC,CAAC;QACF,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;KACnC,CAAC;IAEF,SAAS,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACnC,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;SACtB,CAAC;KACH,CAAC;IAEF,cAAc,EAAE,OAAO,CAAC;QACtB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;gBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAChC,SAAS,EAAE,CAAC;qBACT,MAAM,CAAC;oBACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBAC9B,CAAC;qBACD,QAAQ,EAAE;aACd,CAAC,CACH;YACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SACxC,CAAC;QACF,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;KACnC,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"FrameworkRequests.js","sourceRoot":"","sources":["../../src/shared/FrameworkRequests.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.148",
3
+ "version": "0.1.150",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -0,0 +1,57 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { getLocalUrl } from './url.js';
4
+
5
+ export interface FeedbackResolveOptions {
6
+ feedbackId: string;
7
+ status: 'resolved' | 'declined';
8
+ resolution: string;
9
+ }
10
+
11
+ function readTokenFromEnv(): string {
12
+ let envContent = '';
13
+ try {
14
+ envContent = fs.readFileSync(
15
+ path.join(process.cwd(), '.env'),
16
+ 'utf-8',
17
+ );
18
+ } catch {
19
+ throw new Error(
20
+ 'No .env file found. Run "npx ugly-app login" first to set up UGLY_BOT_TOKEN.',
21
+ );
22
+ }
23
+ const match = envContent.match(/^UGLY_BOT_TOKEN=(.+)$/m);
24
+ if (!match?.[1]) {
25
+ throw new Error(
26
+ 'UGLY_BOT_TOKEN not found in .env. Run "npx ugly-app login" first.',
27
+ );
28
+ }
29
+ return match[1];
30
+ }
31
+
32
+ export async function resolveFeedback(
33
+ opts: FeedbackResolveOptions,
34
+ ): Promise<void> {
35
+ const baseUrl = getLocalUrl(process.cwd());
36
+ const token = readTokenFromEnv();
37
+
38
+ const res = await fetch(`${baseUrl}/api/resolveFeedback`, {
39
+ method: 'POST',
40
+ headers: {
41
+ 'Authorization': `Bearer ${token}`,
42
+ 'Content-Type': 'application/json',
43
+ },
44
+ body: JSON.stringify({
45
+ input: {
46
+ feedbackId: opts.feedbackId,
47
+ status: opts.status,
48
+ resolution: opts.resolution,
49
+ },
50
+ }),
51
+ });
52
+
53
+ if (!res.ok) {
54
+ const body = await res.text().catch(() => '');
55
+ throw new Error(`Failed to resolve feedback: ${res.status} ${body}`);
56
+ }
57
+ }
@@ -0,0 +1,102 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { getLocalUrl } from './url.js';
4
+
5
+ export interface FeedbackSubmitOptions {
6
+ type: 'bug' | 'feature' | 'design';
7
+ message: string;
8
+ url?: string;
9
+ screenshot?: string; // file path to a PNG
10
+ token: string;
11
+ logs?: string; // JSON string of FeedbackLogEntry[]
12
+ }
13
+
14
+ async function uploadScreenshot(
15
+ baseUrl: string,
16
+ token: string,
17
+ filePath: string,
18
+ ): Promise<string> {
19
+ const ext = path.extname(filePath).slice(1) || 'png';
20
+ const key = `feedback/${Date.now()}.${ext}`;
21
+
22
+ // Check file exists before requesting upload URL
23
+ if (!fs.existsSync(filePath)) {
24
+ throw new Error(`Screenshot file not found: ${filePath}`);
25
+ }
26
+
27
+ // Get presigned upload URL
28
+ const presignRes = await fetch(`${baseUrl}/api/uploadUrl`, {
29
+ method: 'POST',
30
+ headers: {
31
+ 'Authorization': `Bearer ${token}`,
32
+ 'Content-Type': 'application/json',
33
+ },
34
+ body: JSON.stringify({
35
+ input: { key, contentType: `image/${ext}` },
36
+ }),
37
+ });
38
+ if (!presignRes.ok) {
39
+ throw new Error(`Failed to get upload URL: ${presignRes.status}`);
40
+ }
41
+ const { uploadUrl, resultUrl } = (await presignRes.json()) as {
42
+ uploadUrl: string;
43
+ resultUrl: string;
44
+ };
45
+
46
+ // Upload the file
47
+ const fileBuffer = fs.readFileSync(filePath);
48
+ const uploadRes = await fetch(uploadUrl, {
49
+ method: 'PUT',
50
+ headers: { 'Content-Type': `image/${ext}` },
51
+ body: fileBuffer,
52
+ });
53
+ if (!uploadRes.ok) {
54
+ throw new Error(`Failed to upload screenshot: ${uploadRes.status}`);
55
+ }
56
+
57
+ return resultUrl;
58
+ }
59
+
60
+ export async function submitFeedback(
61
+ opts: FeedbackSubmitOptions,
62
+ ): Promise<{ id: string }> {
63
+ const baseUrl = getLocalUrl(process.cwd());
64
+
65
+ let screenshotUri: string | undefined;
66
+ if (opts.screenshot) {
67
+ screenshotUri = await uploadScreenshot(baseUrl, opts.token, opts.screenshot);
68
+ }
69
+
70
+ let previousLogs: unknown[] | undefined;
71
+ if (opts.logs) {
72
+ try {
73
+ previousLogs = JSON.parse(opts.logs);
74
+ } catch {
75
+ throw new Error(`--logs must be valid JSON: ${opts.logs.slice(0, 100)}`);
76
+ }
77
+ }
78
+
79
+ const res = await fetch(`${baseUrl}/api/submitFeedback`, {
80
+ method: 'POST',
81
+ headers: {
82
+ 'Authorization': `Bearer ${opts.token}`,
83
+ 'Content-Type': 'application/json',
84
+ },
85
+ body: JSON.stringify({
86
+ input: {
87
+ type: opts.type,
88
+ message: opts.message,
89
+ url: opts.url ?? baseUrl,
90
+ screenshotUri,
91
+ previousLogs,
92
+ },
93
+ }),
94
+ });
95
+
96
+ if (!res.ok) {
97
+ const body = await res.text().catch(() => '');
98
+ throw new Error(`Failed to submit feedback: ${res.status} ${body}`);
99
+ }
100
+
101
+ return (await res.json()) as { id: string };
102
+ }
package/src/cli/index.ts CHANGED
@@ -296,6 +296,61 @@ program
296
296
  }
297
297
  });
298
298
 
299
+ program
300
+ .command('feedback:submit')
301
+ .description('Submit feedback to the local dev server')
302
+ .requiredOption('--type <type>', 'Feedback type: bug, feature, or design')
303
+ .requiredOption('--message <message>', 'Feedback description')
304
+ .requiredOption('--token <token>', 'Bot auth token (Bearer)')
305
+ .option('--url <url>', 'Page URL the feedback is about')
306
+ .option('--screenshot <path>', 'Path to screenshot image file')
307
+ .option('--logs <json>', 'Console logs as JSON array of {timestamp, level, message}')
308
+ .action(async (opts: {
309
+ type: string;
310
+ message: string;
311
+ token: string;
312
+ url?: string;
313
+ screenshot?: string;
314
+ logs?: string;
315
+ }) => {
316
+ try {
317
+ const { submitFeedback } = await import('./feedbackSubmit.js');
318
+ const result = await submitFeedback({
319
+ type: opts.type as 'bug' | 'feature' | 'design',
320
+ message: opts.message,
321
+ token: opts.token,
322
+ url: opts.url,
323
+ screenshot: opts.screenshot,
324
+ logs: opts.logs,
325
+ });
326
+ console.log(JSON.stringify(result, null, 2));
327
+ } catch (e) {
328
+ console.error((e as Error).message);
329
+ process.exit(1);
330
+ }
331
+ });
332
+
333
+ program
334
+ .command('feedback:resolve')
335
+ .description('Resolve or decline a feedback item on the local dev server')
336
+ .requiredOption('--id <feedbackId>', 'Feedback report ID')
337
+ .requiredOption('--status <status>', 'New status: resolved or declined')
338
+ .requiredOption('--resolution <text>', 'Resolution message')
339
+ .action(async (opts: { id: string; status: string; resolution: string }) => {
340
+ try {
341
+ const { resolveFeedback } = await import('./feedbackResolve.js');
342
+ await resolveFeedback({
343
+ feedbackId: opts.id,
344
+ status: opts.status as 'resolved' | 'declined',
345
+ resolution: opts.resolution,
346
+ });
347
+ console.log('Feedback resolved.');
348
+ } catch (e) {
349
+ console.error((e as Error).message);
350
+ process.exit(1);
351
+ }
352
+ });
353
+
299
354
  program
300
355
  .command('dev-logs')
301
356
  .description('Show local dev logs from JSONL files')
@@ -414,6 +469,19 @@ program
414
469
  }
415
470
  });
416
471
 
472
+ program
473
+ .command('url')
474
+ .description('Print the local dev server URL (from .uglyapp config)')
475
+ .action(async () => {
476
+ try {
477
+ const { getLocalUrl } = await import('./url.js');
478
+ console.log(getLocalUrl(process.cwd()));
479
+ } catch (e) {
480
+ console.error((e as Error).message);
481
+ process.exit(1);
482
+ }
483
+ });
484
+
417
485
  program
418
486
  .command('upgrade')
419
487
  .description('Upgrade framework config files to the current ugly-app version')
package/src/cli/url.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { computePorts, readUglyAppConfig } from './uglyappConfig.js';
2
+
3
+ export function getLocalUrl(cwd: string): string {
4
+ const config = readUglyAppConfig(cwd);
5
+ const port = config ? computePorts(config.portStart).PORT : 3000;
6
+ return `http://localhost:${port}`;
7
+ }
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.148";
2
+ export const CLI_VERSION = "0.1.150";
@@ -1,5 +1,5 @@
1
1
  import { authReq, defineRequests, req, z } from './Api.js';
2
- import { SubmitFeedbackInput } from './FeedbackReport.js';
2
+ import { ResolveFeedbackInput, SubmitFeedbackInput } from './FeedbackReport.js';
3
3
  import type { ImageGenModel } from './ImageGen.js';
4
4
  import type { TextGenModel } from './TextGen.js';
5
5
 
@@ -33,6 +33,11 @@ export const frameworkRequests = defineRequests({
33
33
  rateLimit: { max: 20, window: 60 },
34
34
  }),
35
35
 
36
+ resolveFeedback: authReq({
37
+ input: ResolveFeedbackInput,
38
+ output: z.object({}),
39
+ }),
40
+
36
41
  initSession: req({
37
42
  input: z.object({ sessionId: z.string() }),
38
43
  output: z.object({ branches: z.record(z.string(), z.string()) }),
@@ -12,22 +12,34 @@ Run one full autonomous cycle. No human input. No clarifying questions. Make the
12
12
 
13
13
  ## About the Website
14
14
 
15
- This website can do **anything**. It is a full-stack app with AI capabilities, real-time data, and a complete UI component library. The current sample pages demonstrate a subset of what's possible:
15
+ This website is a **blank canvas**. It is a full-stack app with AI capabilities, real-time data, and a complete UI component library but it has no content, no pages, no purpose yet. The swarm decides what it becomes.
16
16
 
17
- - **AI Test** (`/ai-test`) text generation (textGen) and image generation (imageGen)
18
- - **Audio Test** (`/audio-test`) — text-to-speech (TTS) and speech-to-text (STT)
19
- - **Kagi Test** (`/kagi-test`) — Kagi search API integration
20
- - **UI Components** (`/ui-components`) — suite of common UI controls (buttons, cards, inputs, selects, modals, etc.)
21
- - **Todo Demo** (`/todo-demo`) — real-time CRUD with live sync
22
- - **Auth Demo** (`/auth-demo`) — OAuth login/logout
23
- - **Path Params** (`/user/:userId`) and **Query Params** (`/search`) — routing demos
17
+ The template includes demo/test pages (todo demo, UI components, auth demo, etc.) that exist only to show developers what the framework can do. **These test pages are not the website. Ignore them entirely.** Do not iterate on them, redesign them, or treat them as features. They are documentation, not product.
24
18
 
25
- These are just samples. The bot swarm should treat the site as a blank canvas — feedback bots can request entirely new pages, features, layouts, data models, or integrations. There are no limits on what can be built.
19
+ On the **first cycle**, the manager should:
20
+
21
+ 1. Browse the site to understand the framework's capabilities (what components, APIs, and tools are available)
22
+
23
+ 2. Invent a **completely original concept** for what this website should be — a real product with a clear purpose, target audience, and identity
24
+
25
+ 3. Create personas that fit the invented product concept
26
+
27
+ 4. The feedback bots should then request the foundational pages, features, and design that bring this concept to life from scratch
28
+
29
+ On **subsequent cycles**, the swarm evolves the product they invented — adding depth, polish, and new capabilities. The site's identity emerges from the swarm's collective vision, not from any pre-existing content.
30
+
31
+ There are no limits on what can be built. New pages, endpoints, collections, migrations, AI integrations, real-time features, image generation — everything is available.
32
+
33
+ ## Base URL
34
+
35
+ Run `npx ugly-app url` to get the local server URL. Use this value everywhere (browsing, API calls, polling). Store it as `BASE_URL` for the cycle.
26
36
 
27
37
  ## Prerequisites
28
38
 
29
39
  - The dev server must be running **without** `--watch` (see below)
40
+
30
41
  - `.env` must have `UGLY_BOT_TOKEN` (from `npx ugly-app login`)
42
+
31
43
  - Playwright must be installed (`npx playwright install chromium`)
32
44
 
33
45
  ### Starting the dev server (no watchers)
@@ -40,30 +52,6 @@ npx ugly-app dev
40
52
 
41
53
  This starts Docker, MongoDB, and the server but **without** tsx watch, tsc --watch, or eslint --watch. Do **not** use `npm run dev` (which adds `--watch`) or `npx ugly-app dev --watch`. After the maintain bot finishes and commits, the restart step (Step 5) will kill and restart the server to pick up changes.
42
54
 
43
- ## First Run Bootstrap
44
-
45
- If `bots/` directory does not exist:
46
-
47
- 1. Create the directory structure:
48
- ```
49
- bots/
50
- manager/memory.md (empty)
51
- feedback/active/ (empty dir)
52
- feedback/retired/ (empty dir)
53
- maintain/memory.md (empty)
54
- journal/README.md (empty)
55
- journal/cycles/
56
- journal/cycles/screenshots/
57
- ```
58
-
59
- 2. Add to `.gitignore`:
60
- ```
61
- bots/feedback/active/*/.env
62
- bots/feedback/retired/*/.env
63
- ```
64
-
65
- 3. Commit: `[bot] init: create bots directory structure`
66
-
67
55
  ---
68
56
 
69
57
  ## Step 1 — Manager (create/update feedback bots)
@@ -71,66 +59,110 @@ If `bots/` directory does not exist:
71
59
  ### If first cycle (no personas in `bots/feedback/active/`):
72
60
 
73
61
  1. Launch Playwright (headless Chromium)
74
- 2. Navigate to `http://localhost:3000`, browse all pages
75
- 3. Observe: what does this site do? What exists? What's the tech stack?
76
- 4. Decide on 5-13 initial personas. Each should have a distinct perspective that will generate useful, non-overlapping feedback. Consider:
62
+
63
+ 2. Navigate to `$BASE_URL`, browse all pages to understand the **framework's capabilities** (available components, APIs, patterns)
64
+
65
+ 3. **Ignore all existing demo/test pages** — they are developer documentation, not the website
66
+
67
+ 4. **Invent an original product concept**: decide what this website should become. Pick something specific and interesting — not a generic portfolio or landing page. Think: a real product someone would use. Write the concept into `bots/manager/memory.md`.
68
+
69
+ 5. Decide on 5-13 initial personas that fit the invented product. Each should have a distinct perspective that will generate useful, non-overlapping feedback. Consider:
77
70
  - Different user types (power user, newcomer, accessibility-focused, mobile-first)
71
+
78
72
  - Different concerns (design, performance, features, content, UX flow)
73
+
79
74
  - Different temperaments (critical, enthusiastic, minimalist, maximalist)
80
- 5. For each persona:
75
+
76
+ 6. For each persona:
81
77
  - Run: `npx ugly-app auth:create-bot --slug {slug} --name "{Name}"`
78
+
82
79
  - Save the JSON output to `bots/feedback/active/{slug}/.env`:
80
+
83
81
  ```
84
82
  BOT_SLUG={slug}
85
83
  BOT_USER_ID={userId from output}
86
84
  BOT_TOKEN={token from output}
87
85
  ```
86
+
88
87
  - Write `bots/feedback/active/{slug}/persona.md`:
88
+
89
89
  ```markdown
90
90
  ---
91
91
  name: Display Name
92
92
  slug: slug-name
93
93
  ---
94
+
94
95
  # Display Name
96
+
95
97
  ## Who You Are
98
+
96
99
  [Personality, perspective, what they care about]
100
+
97
101
  ## What You Notice
102
+
98
103
  [Types of observations this persona makes]
104
+
99
105
  ## Feedback Style
106
+
100
107
  [Tone, specificity, format of their feedback]
101
108
  ```
109
+
102
110
  - Write empty `bots/feedback/active/{slug}/memory.md`
103
- 6. Write `bots/manager/memory.md` with initial roster and site hypothesis
104
- 7. Commit: `[bot] manager: initial roster {comma-separated persona names}`
111
+
112
+ 7. Write `bots/manager/memory.md` with the invented product concept, initial roster, and site hypothesis
113
+
114
+ 8. Commit: `[bot] manager: initial roster — {comma-separated persona names}`
105
115
 
106
116
  ### If subsequent cycle:
107
117
 
108
118
  1. Read `bots/manager/memory.md`
119
+
109
120
  2. Read each active persona's `memory.md`
121
+
110
122
  3. Run `npm run feedback` to see recent feedback and resolutions
123
+
111
124
  4. Browse the site with Playwright to see current state
125
+
112
126
  5. For each persona decide: **keep** / **revise** / **retire**
113
127
  - Keep: no changes needed
128
+
114
129
  - Revise: rewrite their `persona.md` to sharpen or shift focus
130
+
115
131
  - Retire: `mv bots/feedback/active/{slug} bots/feedback/retired/{slug}`
132
+
116
133
  6. Create new personas if coverage gaps exist (same account creation flow as first run)
134
+
117
135
  7. Update `bots/manager/memory.md`:
136
+
118
137
  ```markdown
119
138
  # Feedback Manager Memory
139
+
120
140
  ## Last Updated
141
+
121
142
  [date]
143
+
122
144
  ## Site Hypothesis
145
+
123
146
  [What is this site becoming?]
147
+
124
148
  ## Active Roster
149
+
125
150
  [list with one-line descriptions]
151
+
126
152
  ## Coverage Assessment
153
+
127
154
  Well-covered: [list]
128
155
  Missing: [list]
156
+
129
157
  ## Recent Decisions
158
+
130
159
  [last 3 cycles of keep/revise/retire/create decisions with reasons]
160
+
131
161
  ## History
162
+
132
163
  [compressed older entries when exceeding ~4000 tokens]
133
164
  ```
165
+
134
166
  8. Commit changes: `[bot] manager: {summary of changes}`
135
167
 
136
168
  ---
@@ -140,43 +172,47 @@ If `bots/` directory does not exist:
140
172
  Dispatch ALL active personas as **parallel subagents**. Each subagent does:
141
173
 
142
174
  1. Read `bots/feedback/active/{slug}/persona.md` and `memory.md`
175
+
143
176
  2. Read `bots/feedback/active/{slug}/.env` for `BOT_TOKEN`
144
177
  - If `.env` is missing: run `npx ugly-app auth:create-bot --slug {slug} --name "{name}"` to regenerate
178
+
145
179
  3. Launch Playwright (headless Chromium)
180
+
146
181
  4. Set up console log capture: listen to `page.on('console')` events, buffer them
147
- 5. Authenticate: set auth cookie with the bot's token, navigate to `http://localhost:3000`
182
+
183
+ 5. Authenticate: set auth cookie with the bot's token, navigate to `$BASE_URL`
148
184
  - Cookie name: check the app's auth cookie name (typically set by the login flow)
185
+
149
186
  - Alternative: make a POST to `/request` with `op: "userEmailLogin"` using the bot's token
187
+
150
188
  6. Browse all available pages from the persona's perspective
189
+
151
190
  7. For each observation worth reporting (1-5 total):
152
191
  - Navigate to the relevant page
153
- - Take a screenshot: `const screenshot = await page.screenshot({ encoding: 'base64' })`
154
- - Collect buffered console logs as `ErrorLogEntry[]` (format: `{ level, message, timestamp }`)
155
- - Submit feedback via API:
192
+
193
+ - Take a screenshot and save to a temp file: `await page.screenshot({ path: '/tmp/screenshot.png' })`
194
+
195
+ - Collect buffered console logs as JSON: `[{ "timestamp": ..., "level": "error", "message": "..." }]`
196
+
197
+ - Submit feedback via CLI:
198
+
156
199
  ```bash
157
- curl -X POST http://localhost:3000/request \
158
- -H "Authorization: Bearer $BOT_TOKEN" \
159
- -H "Content-Type: application/json" \
160
- -d '{
161
- "op": "feedbackReportCreate",
162
- "input": {
163
- "type": "bug|feature|design",
164
- "description": "...",
165
- "screenshotBase64": "...",
166
- "logs": [...],
167
- "url": "http://localhost:3000/current-page",
168
- "page": "pageName",
169
- "userAgent": "BotSwarm/{slug}",
170
- "screenWidth": 1280,
171
- "screenHeight": 720
172
- }
173
- }'
200
+ npx ugly-app feedback:submit \
201
+ --type "bug|feature|design" \
202
+ --message "description of the feedback" \
203
+ --token "$BOT_TOKEN" \
204
+ --url "$BASE_URL/current-page" \
205
+ --screenshot /tmp/screenshot.png \
206
+ --logs '[{"timestamp":...,"level":"error","message":"..."}]'
174
207
  ```
208
+
175
209
  **Feedback bots should be ambitious in what they request.** Don't just report cosmetic nits — request new features, suggest adding entire new pages, propose redesigns, ask for search/filter/sort capabilities, request animations, dark mode, better navigation, new data models. Think like a demanding product manager, not a passive observer. The feedback should push the site to evolve rapidly.
176
210
 
177
211
  8. Update `bots/feedback/active/{slug}/memory.md`:
212
+
178
213
  ```markdown
179
214
  ## Cycle [YYYY-MM-DD]
215
+
180
216
  **Submitted:** [list of feedback items with types]
181
217
  **Previous feedback resolved:** [what changed since last visit]
182
218
  **Previous feedback declined:** [what was not built and why]
@@ -196,48 +232,89 @@ Run sequentially in one session. No questions. Make autonomous decisions.
196
232
 
197
233
  **AMBITION MANDATE: The maintain bot builds everything. There is no "too complex," "too risky," or "would require significant changes." If a feedback bot asked for it, you build it. New pages, new endpoints, new collections, migrations, full redesigns, multi-file refactors — all fair game. The only valid decline reason is a direct contradiction of a Critical Rule in CLAUDE.md. Everything else gets built, no matter how many files it touches or how large the change is.**
198
234
 
235
+ **BLANK CANVAS RULE: On the first cycle, the maintain bot should remove or replace the template's demo/test pages (TodoDemo, UIComponents, AuthDemo, AITest, AudioTest, ScrollTest, KagiTest, SearchPage, UserPage) with the new pages requested by the feedback bots. The demo pages are scaffolding — delete them as real pages are built. Update&#x20;\*\***shared/pages.ts\***\*,&#x20;\*\***client/allPages.ts\***\*, and remove unused page components.**
236
+
199
237
  1. Read `bots/maintain/memory.md` for feature inventory and context
238
+
200
239
  2. Mark all `new` feedback as `captured` to prevent double-processing:
201
240
  - Run `npm run feedback --json` to get all feedback
202
- - For each item with status `new`, call:
241
+
242
+ - For each item with status `new`, resolve it:
243
+
203
244
  ```bash
204
- curl -X POST http://localhost:3000/request \
205
- -H "Authorization: Bearer $UGLY_BOT_TOKEN" \
206
- -H "Content-Type: application/json" \
207
- -d '{"op":"feedbackReportResolve","input":{"feedbackReportId":"...","status":"captured","resolution":""}}'
245
+ npx ugly-app feedback:resolve --id "<feedbackReportId>" --status resolved --resolution "captured for processing"
208
246
  ```
247
+
209
248
  3. Invoke `/fix-feedback local` — run completely unattended:
210
249
  - Do not ask which environment. Use `local`.
250
+
211
251
  - For each feedback item: implement the fix or feature. **Build it, no matter how large.**
252
+
212
253
  - **Never decline feedback because it's "complex" or "ambitious."** If you're unsure how, read existing code and the ugly-app API reference, then figure it out.
254
+
213
255
  - If feedback requires new pages: add routes in `shared/pages.ts`, components in `client/pages/`, mappings in `client/allPages.ts`.
256
+
214
257
  - If feedback requires new endpoints: add to `shared/api.ts` and `server/index.ts`.
258
+
215
259
  - If feedback requires new collections: add to `shared/collections.ts`, run `npm run db:init`.
260
+
216
261
  - If feedback requires images: use `npm run imageGen -- "prompt" --output client/assets/<name>.png`.
262
+
217
263
  - If feedback requires schema changes: write a migration in `server/migrations/`.
218
- - Resolve each item via API with status `resolved` (preferred) or `declined` (only for Critical Rule violations) and a resolution message.
264
+
265
+ - Resolve each item via CLI:
266
+
267
+ ```bash
268
+ npx ugly-app feedback:resolve --id "<id>" --status resolved --resolution "Built: description"
269
+ ```
270
+
271
+ Or decline (only for Critical Rule violations):
272
+
273
+ ```bash
274
+ npx ugly-app feedback:resolve --id "<id>" --status declined --resolution "Reason"
275
+ ```
276
+
219
277
  - Commit each change: `[bot] fix: ...` or `[bot] feat: ...`
278
+
220
279
  4. Invoke `/fix-code` — run completely unattended:
221
280
  - Fix all TypeScript errors, lint warnings, test failures.
281
+
222
282
  - Commit: `[bot] fix: build errors`
283
+
223
284
  5. Invoke `/fix-perf local` — run completely unattended:
224
285
  - Do not ask which environment. Use `local`.
286
+
225
287
  - Fix any performance issues found.
288
+
226
289
  - Commit: `[bot] perf: ...`
290
+
227
291
  6. Update `bots/maintain/memory.md`:
292
+
228
293
  ```markdown
229
294
  # Maintain Bot Memory
295
+
230
296
  ## Last Updated
297
+
231
298
  [date]
299
+
232
300
  ## Feature Inventory
301
+
233
302
  [what exists on the site now]
303
+
234
304
  ## Recent Feedback Themes
305
+
235
306
  [what kinds of feedback are coming in]
307
+
236
308
  ## Recurring Issues
309
+
237
310
  [errors or perf problems that keep appearing]
311
+
238
312
  ## Site Direction
313
+
239
314
  [what is this site becoming?]
315
+
240
316
  ## Cycle History
317
+
241
318
  [last 3 cycles, compress older entries when > ~4000 tokens]
242
319
  ```
243
320
 
@@ -246,35 +323,48 @@ Run sequentially in one session. No questions. Make autonomous decisions.
246
323
  ## Step 4 — Journal Bot
247
324
 
248
325
  1. Count existing `.md` files in `bots/journal/cycles/` to determine cycle number (NNN, zero-padded to 3 digits)
326
+
249
327
  2. Take Playwright screenshots of every accessible page, save to `bots/journal/cycles/screenshots/{NNN}-{page-slug}.png`
328
+
250
329
  3. Gather cycle data:
251
330
  - Manager decisions from Step 1
331
+
252
332
  - Feedback bot results from Step 2 (which succeeded, what was submitted)
333
+
253
334
  - Maintain bot changes from Step 3 (git log of `[bot]` commits since last cycle)
335
+
254
336
  4. Write `bots/journal/cycles/YYYY-MM-DD-NNN.md`:
337
+
255
338
  ```markdown
256
339
  # Cycle NNN — YYYY-MM-DD
257
340
 
258
341
  ## Outcomes
342
+
259
343
  - Manager: [status] — [roster changes]
260
344
  - Feedback: [N/M bots succeeded] — [top themes]
261
345
  - Maintain: [status] — [N commits, N feedback resolved, N declined]
262
346
  - Restart: [pending — filled in by Step 5]
263
347
 
264
348
  ## Feedback Submitted
349
+
265
350
  [summary of all feedback items across all bots this cycle]
266
351
 
267
352
  ## Changes Deployed
353
+
268
354
  [git log --oneline of [bot] commits from this cycle]
269
355
 
270
356
  ## Screenshots
357
+
271
358
  ![page-name](screenshots/NNN-page-slug.png)
272
359
  [one per page]
273
360
 
274
361
  ## Observations
362
+
275
363
  [patterns, emerging direction, concerns, what's working, what's not]
276
364
  ```
365
+
277
366
  5. Update `bots/journal/README.md` — overwrite with a one-paragraph running summary of the project's evolution so far
367
+
278
368
  6. Commit: `[bot] journal: cycle NNN`
279
369
 
280
370
  ---
@@ -282,24 +372,41 @@ Run sequentially in one session. No questions. Make autonomous decisions.
282
372
  ## Step 5 — Restart Loop
283
373
 
284
374
  1. Stop the dev server (find and kill the `npx ugly-app dev` process group)
375
+
285
376
  2. Run `npm install` (maintain bot may have added packages in Step 3)
377
+
286
378
  3. Run `npm run build`
379
+
287
380
  4. **If build fails:**
288
381
  - Read the full error output
382
+
289
383
  - Identify the root cause in the source code
384
+
290
385
  - Fix it
386
+
291
387
  - Commit: `[bot] fix: build errors`
388
+
292
389
  - Run `npm run build` again
390
+
293
391
  - **Repeat until build succeeds. Do not stop. Do not ask for help.**
392
+
294
393
  5. Start `npx ugly-app dev` in the background (no `--watch`)
295
- 6. Wait for the server to be ready — poll `http://localhost:3000` with up to 60 retries (1s apart)
394
+
395
+ 6. Wait for the server to be ready — poll `$(npx ugly-app url)` with up to 60 retries (1s apart)
396
+
296
397
  7. **If server fails to start or crashes:**
297
398
  - Read the error output and/or `npm run error`
399
+
298
400
  - Fix the code
401
+
299
402
  - Commit: `[bot] fix: startup errors`
403
+
300
404
  - Kill and restart `npx ugly-app dev`
405
+
301
406
  - **Repeat until server is healthy. Do not stop. Do not ask for help.**
407
+
302
408
  8. Once healthy: update the journal cycle file's Restart outcome to `success` or note any fixes made
409
+
303
410
  9. Commit any remaining changes: `[bot] fix: restart issues`
304
411
 
305
412
  **The restart loop has no retry limit.** It runs until clean or until externally killed. If a human has to intervene, the bots have failed.
@@ -309,6 +416,7 @@ Run sequentially in one session. No questions. Make autonomous decisions.
309
416
  ## Completion
310
417
 
311
418
  Output a one-line summary:
419
+
312
420
  ```
313
421
  Cycle NNN complete. Manager: {status}. Bots: {N}/{M}. Maintain: {status}. Journal: {status}. Restart: {status}.
314
422
  ```
@@ -19,6 +19,9 @@ Full API reference: https://www.npmjs.com/package/ugly-app
19
19
  - `npm run perf` / `npm run perf:server` — Query perf logs (local / production)
20
20
  - `npm run feedback` / `npm run feedback:server` — Query feedback (local / production)
21
21
  - `npm run dev-logs` — Show local dev logs from JSONL files
22
+ - `npx ugly-app url` — Print the local dev server URL (from `.uglyapp` config)
23
+ - `npx ugly-app feedback:submit` — Submit feedback to local server (use `--help` for flags)
24
+ - `npx ugly-app feedback:resolve` — Resolve/decline a feedback item (use `--help` for flags)
22
25
 
23
26
  ## Adding an endpoint
24
27
  1. Define in `shared/api.ts` using `req()` (public) or `authReq()` (authenticated) + Zod schemas
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -4,4 +4,6 @@ dist/
4
4
  .env
5
5
  local/
6
6
  logs/
7
- coverage/
7
+ coverage/
8
+ bots/feedback/active/*/.env
9
+ bots/feedback/retired/*/.env