@ytspar/sweetlink 1.0.0 → 1.1.0

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.
@@ -8,10 +8,8 @@
8
8
  export declare const DEFAULT_SCREENSHOT_SCALE = 0.25;
9
9
  /** Default JPEG quality */
10
10
  export declare const DEFAULT_SCREENSHOT_QUALITY = 0.7;
11
- /** Higher quality scale for design review */
12
- export declare const DESIGN_REVIEW_SCALE = 0.75;
13
- /** Higher quality JPEG for devbar screenshots */
14
- export declare const DEVBAR_SCREENSHOT_QUALITY = 0.8;
11
+ /** JPEG quality for devbar screenshots (balances clarity vs file size ~100KB) */
12
+ export declare const DEVBAR_SCREENSHOT_QUALITY = 0.65;
15
13
  /**
16
14
  * Options for canvas scaling
17
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"screenshotUtils.d.ts","sourceRoot":"","sources":["../../src/browser/screenshotUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,sCAAsC;AACtC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,2BAA2B;AAC3B,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,iDAAiD;AACjD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAM7C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,cAAc,EAAE,iBAAiB,EACjC,OAAO,EAAE,kBAAkB,GAC1B,iBAAiB,CAiBnB;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAOjG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,CAEnF;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,IAAI,CAU9C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAMD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpF;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,CAYpB"}
1
+ {"version":3,"file":"screenshotUtils.d.ts","sourceRoot":"","sources":["../../src/browser/screenshotUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,sCAAsC;AACtC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,2BAA2B;AAC3B,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAM9C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,cAAc,EAAE,iBAAiB,EACjC,OAAO,EAAE,kBAAkB,GAC1B,iBAAiB,CAiBnB;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAOjG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,CAEnF;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,IAAI,CAU9C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAMD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpF;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,CAYpB"}
@@ -11,10 +11,8 @@
11
11
  export const DEFAULT_SCREENSHOT_SCALE = 0.25;
12
12
  /** Default JPEG quality */
13
13
  export const DEFAULT_SCREENSHOT_QUALITY = 0.7;
14
- /** Higher quality scale for design review */
15
- export const DESIGN_REVIEW_SCALE = 0.75;
16
- /** Higher quality JPEG for devbar screenshots */
17
- export const DEVBAR_SCREENSHOT_QUALITY = 0.8;
14
+ /** JPEG quality for devbar screenshots (balances clarity vs file size ~100KB) */
15
+ export const DEVBAR_SCREENSHOT_QUALITY = 0.65;
18
16
  /**
19
17
  * Scale a canvas down to a smaller size
20
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"screenshotUtils.js","sourceRoot":"","sources":["../../src/browser/screenshotUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenshotUtils.js","sourceRoot":"","sources":["../../src/browser/screenshotUtils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"consoleLogs.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/consoleLogs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAgCjC"}
1
+ {"version":3,"file":"consoleLogs.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/consoleLogs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAUjC"}
@@ -3,39 +3,18 @@
3
3
  *
4
4
  * Handles saving console logs to the file system.
5
5
  */
6
- import { promises as fs } from 'fs';
7
- import { join } from 'path';
8
- import { generateBaseFilename, generateSlugFromUrl, SCREENSHOT_DIR } from '../../urlUtils.js';
9
- import { getProjectRoot } from '../index.js';
6
+ import { saveMarkdownArtifact } from './saveMarkdown.js';
10
7
  /**
11
8
  * Handle console logs save: saves the logs as markdown to the screenshots folder
12
9
  */
13
10
  export async function handleSaveConsoleLogs(data) {
14
- const { markdown, url, title, timestamp } = data;
15
- // Create directory if it doesn't exist (relative to project root captured at server start)
16
- const dir = join(getProjectRoot(), SCREENSHOT_DIR);
17
- await fs.mkdir(dir, { recursive: true });
18
- // Generate a slug from URL path or title and create filename with shared utility
19
- const slug = generateSlugFromUrl(url, title);
20
- const baseFilename = generateBaseFilename('console-logs', timestamp, slug);
21
- // Build the console logs markdown file with frontmatter
22
- const logsMarkdown = `---
23
- title: ${title || 'Console Logs'}
24
- url: ${url}
25
- timestamp: ${new Date(timestamp).toISOString()}
26
- ---
27
-
28
- # Console Logs
29
-
30
- > Page: ${title || url}
31
- > Generated: ${new Date(timestamp).toLocaleString()}
32
-
33
- ${markdown || '_No console logs recorded_'}
34
- `;
35
- // Save the console logs markdown
36
- const consoleLogsPath = join(dir, `${baseFilename}.md`);
37
- await fs.writeFile(consoleLogsPath, logsMarkdown, 'utf-8');
38
- console.log(`[Sweetlink] Console logs saved: ${consoleLogsPath}`);
11
+ const consoleLogsPath = await saveMarkdownArtifact({
12
+ type: 'console-logs',
13
+ markdown: data.markdown || '_No console logs recorded_',
14
+ url: data.url,
15
+ title: data.title,
16
+ timestamp: data.timestamp,
17
+ });
39
18
  return { consoleLogsPath };
40
19
  }
41
20
  //# sourceMappingURL=consoleLogs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consoleLogs.js","sourceRoot":"","sources":["../../../src/server/handlers/consoleLogs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAM3C;IACC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEjD,2FAA2F;IAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,iFAAiF;IACjF,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAE3E,wDAAwD;IACxD,MAAM,YAAY,GAAG;SACd,KAAK,IAAI,cAAc;OACzB,GAAG;aACG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;;;;UAKpC,KAAK,IAAI,GAAG;eACP,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;;EAEjD,QAAQ,IAAI,4BAA4B;CACzC,CAAC;IAEA,iCAAiC;IACjC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,mCAAmC,eAAe,EAAE,CAAC,CAAC;IAElE,OAAO,EAAE,eAAe,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"consoleLogs.js","sourceRoot":"","sources":["../../../src/server/handlers/consoleLogs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAMzD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAM3C;IACC,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC;QACjD,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,4BAA4B;QACvD,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO,EAAE,eAAe,EAAE,CAAC;AAC7B,CAAC"}
@@ -7,6 +7,7 @@ export { DESIGN_REVIEW_PROMPT, type DesignReviewResult, handleDesignReviewScreen
7
7
  export { type HmrScreenshotResult, handleHmrScreenshot } from './hmr.js';
8
8
  export { handleSaveConsoleLogs, type ConsoleLogsSaveResult } from './consoleLogs.js';
9
9
  export { handleSaveOutline, type OutlineSaveResult } from './outline.js';
10
+ export { saveMarkdownArtifact } from './saveMarkdown.js';
10
11
  export { handleSaveSchema, type SchemaSaveResult } from './schema.js';
11
12
  export { handleSaveScreenshot } from './screenshot.js';
12
13
  export { type DevBarSettings, handleLoadSettings, handleSaveSettings, type SettingsSaveResult, } from './settings.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,cAAc,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,cAAc,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC"}
@@ -7,6 +7,7 @@ export { DESIGN_REVIEW_PROMPT, handleDesignReviewScreenshot, } from './designRev
7
7
  export { handleHmrScreenshot } from './hmr.js';
8
8
  export { handleSaveConsoleLogs } from './consoleLogs.js';
9
9
  export { handleSaveOutline } from './outline.js';
10
+ export { saveMarkdownArtifact } from './saveMarkdown.js';
10
11
  export { handleSaveSchema } from './schema.js';
11
12
  export { handleSaveScreenshot } from './screenshot.js';
12
13
  export { handleLoadSettings, handleSaveSettings, } from './settings.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EAEpB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA4B,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAA8B,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAA0B,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EAEpB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA4B,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAA8B,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAA0B,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/outline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgC7B"}
1
+ {"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/outline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU7B"}
@@ -3,39 +3,18 @@
3
3
  *
4
4
  * Handles saving document outlines to the file system.
5
5
  */
6
- import { promises as fs } from 'fs';
7
- import { join } from 'path';
8
- import { generateBaseFilename, generateSlugFromUrl, SCREENSHOT_DIR } from '../../urlUtils.js';
9
- import { getProjectRoot } from '../index.js';
6
+ import { saveMarkdownArtifact } from './saveMarkdown.js';
10
7
  /**
11
8
  * Handle document outline save: saves the outline as markdown to the screenshots folder
12
9
  */
13
10
  export async function handleSaveOutline(data) {
14
- const { markdown, url, title, timestamp } = data;
15
- // Create directory if it doesn't exist (relative to project root captured at server start)
16
- const dir = join(getProjectRoot(), SCREENSHOT_DIR);
17
- await fs.mkdir(dir, { recursive: true });
18
- // Generate a slug from URL path or title and create filename with shared utility
19
- const slug = generateSlugFromUrl(url, title);
20
- const baseFilename = generateBaseFilename('outline', timestamp, slug);
21
- // Build the outline markdown file with frontmatter
22
- const outlineMarkdown = `---
23
- title: ${title || 'Document Outline'}
24
- url: ${url}
25
- timestamp: ${new Date(timestamp).toISOString()}
26
- ---
27
-
28
- # Document Outline
29
-
30
- > Page: ${title || url}
31
- > Generated: ${new Date(timestamp).toLocaleString()}
32
-
33
- ${markdown || '_No headings found in this document_'}
34
- `;
35
- // Save the outline markdown
36
- const outlinePath = join(dir, `${baseFilename}.md`);
37
- await fs.writeFile(outlinePath, outlineMarkdown, 'utf-8');
38
- console.log(`[Sweetlink] Document outline saved: ${outlinePath}`);
11
+ const outlinePath = await saveMarkdownArtifact({
12
+ type: 'outline',
13
+ markdown: data.markdown || '_No headings found in this document_',
14
+ url: data.url,
15
+ title: data.title,
16
+ timestamp: data.timestamp,
17
+ });
39
18
  return { outlinePath };
40
19
  }
41
20
  //# sourceMappingURL=outline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outline.js","sourceRoot":"","sources":["../../../src/server/handlers/outline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAMvC;IACC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEjD,2FAA2F;IAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,iFAAiF;IACjF,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAEtE,mDAAmD;IACnD,MAAM,eAAe,GAAG;SACjB,KAAK,IAAI,kBAAkB;OAC7B,GAAG;aACG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;;;;UAKpC,KAAK,IAAI,GAAG;eACP,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;;EAEjD,QAAQ,IAAI,sCAAsC;CACnD,CAAC;IAEA,4BAA4B;IAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,uCAAuC,WAAW,EAAE,CAAC,CAAC;IAElE,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"outline.js","sourceRoot":"","sources":["../../../src/server/handlers/outline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAMzD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAMvC;IACC,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC;QAC7C,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,sCAAsC;QACjE,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared Markdown Artifact Saver
3
+ *
4
+ * Provides a common function for saving markdown artifacts (outlines, schemas,
5
+ * console logs) to the file system with consistent frontmatter and directory handling.
6
+ */
7
+ /**
8
+ * Save a markdown artifact to the screenshots directory with frontmatter.
9
+ *
10
+ * Handles: mkdir, slug generation, frontmatter construction, file write, and logging.
11
+ * Returns the absolute path of the saved file.
12
+ */
13
+ export declare function saveMarkdownArtifact(opts: {
14
+ type: string;
15
+ markdown: string;
16
+ url: string;
17
+ title: string;
18
+ timestamp: number;
19
+ }): Promise<string>;
20
+ //# sourceMappingURL=saveMarkdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saveMarkdown.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/saveMarkdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyClB"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Shared Markdown Artifact Saver
3
+ *
4
+ * Provides a common function for saving markdown artifacts (outlines, schemas,
5
+ * console logs) to the file system with consistent frontmatter and directory handling.
6
+ */
7
+ import { promises as fs } from 'fs';
8
+ import { join } from 'path';
9
+ import { generateBaseFilename, generateSlugFromUrl, SCREENSHOT_DIR } from '../../urlUtils.js';
10
+ import { getProjectRoot } from '../index.js';
11
+ /**
12
+ * Save a markdown artifact to the screenshots directory with frontmatter.
13
+ *
14
+ * Handles: mkdir, slug generation, frontmatter construction, file write, and logging.
15
+ * Returns the absolute path of the saved file.
16
+ */
17
+ export async function saveMarkdownArtifact(opts) {
18
+ const { type, markdown, url, title, timestamp } = opts;
19
+ // Create directory if it doesn't exist (relative to project root captured at server start)
20
+ const dir = join(getProjectRoot(), SCREENSHOT_DIR);
21
+ await fs.mkdir(dir, { recursive: true });
22
+ // Generate a slug from URL path or title and create filename with shared utility
23
+ const slug = generateSlugFromUrl(url, title);
24
+ const baseFilename = generateBaseFilename(type, timestamp, slug);
25
+ // Capitalize the type for the heading (e.g. 'outline' -> 'Outline', 'console-logs' -> 'Console Logs')
26
+ const heading = type
27
+ .split('-')
28
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
29
+ .join(' ');
30
+ // Default title fallback based on type
31
+ const titleFallback = heading;
32
+ // Build the markdown file with frontmatter
33
+ const fullMarkdown = `---
34
+ title: ${title || titleFallback}
35
+ url: ${url}
36
+ timestamp: ${new Date(timestamp).toISOString()}
37
+ ---
38
+
39
+ # ${heading}
40
+
41
+ > Page: ${title || url}
42
+ > Generated: ${new Date(timestamp).toLocaleString()}
43
+
44
+ ${markdown}
45
+ `;
46
+ // Save the markdown file
47
+ const filePath = join(dir, `${baseFilename}.md`);
48
+ await fs.writeFile(filePath, fullMarkdown, 'utf-8');
49
+ console.log(`[Sweetlink] ${heading} saved: ${filePath}`);
50
+ return filePath;
51
+ }
52
+ //# sourceMappingURL=saveMarkdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saveMarkdown.js","sourceRoot":"","sources":["../../../src/server/handlers/saveMarkdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAM1C;IACC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEvD,2FAA2F;IAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,iFAAiF;IACjF,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAEjE,sGAAsG;IACtG,MAAM,OAAO,GAAG,IAAI;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,uCAAuC;IACvC,MAAM,aAAa,GAAG,OAAO,CAAC;IAE9B,2CAA2C;IAC3C,MAAM,YAAY,GAAG;SACd,KAAK,IAAI,aAAa;OACxB,GAAG;aACG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;;IAG1C,OAAO;;UAED,KAAK,IAAI,GAAG;eACP,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;;EAEjD,QAAQ;CACT,CAAC;IAEA,yBAAyB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,WAAW,QAAQ,EAAE,CAAC,CAAC;IAEzD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwC5B"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqB5B"}
@@ -3,47 +3,28 @@
3
3
  *
4
4
  * Handles saving page schemas to the file system.
5
5
  */
6
- import { promises as fs } from 'fs';
7
- import { join } from 'path';
8
- import { generateBaseFilename, generateSlugFromUrl, SCREENSHOT_DIR } from '../../urlUtils.js';
9
- import { getProjectRoot } from '../index.js';
6
+ import { saveMarkdownArtifact } from './saveMarkdown.js';
10
7
  /**
11
8
  * Handle page schema save: saves structured data as markdown to the screenshots folder
12
9
  */
13
10
  export async function handleSaveSchema(data) {
14
- const { schema, markdown, url, title, timestamp } = data;
15
- // Create directory if it doesn't exist (relative to project root captured at server start)
16
- const dir = join(getProjectRoot(), SCREENSHOT_DIR);
17
- await fs.mkdir(dir, { recursive: true });
18
- // Generate a slug from URL path or title and create filename with shared utility
19
- const slug = generateSlugFromUrl(url, title);
20
- const baseFilename = generateBaseFilename('schema', timestamp, slug);
21
- // Build the schema markdown file with frontmatter
22
- const schemaMarkdown = `---
23
- title: ${title || 'Page Schema'}
24
- url: ${url}
25
- timestamp: ${new Date(timestamp).toISOString()}
26
- ---
27
-
28
- # Page Schema
29
-
30
- > Page: ${title || url}
31
- > Generated: ${new Date(timestamp).toLocaleString()}
32
-
33
- ${markdown || '_No structured data found on this page_'}
11
+ // Schema includes extra raw JSON section after the main markdown
12
+ const body = `${data.markdown || '_No structured data found on this page_'}
34
13
 
35
14
  ---
36
15
 
37
16
  ## Raw JSON
38
17
 
39
18
  \`\`\`json
40
- ${JSON.stringify(schema, null, 2)}
41
- \`\`\`
42
- `;
43
- // Save the schema markdown
44
- const schemaPath = join(dir, `${baseFilename}.md`);
45
- await fs.writeFile(schemaPath, schemaMarkdown, 'utf-8');
46
- console.log(`[Sweetlink] Page schema saved: ${schemaPath}`);
19
+ ${JSON.stringify(data.schema, null, 2)}
20
+ \`\`\``;
21
+ const schemaPath = await saveMarkdownArtifact({
22
+ type: 'schema',
23
+ markdown: body,
24
+ url: data.url,
25
+ title: data.title,
26
+ timestamp: data.timestamp,
27
+ });
47
28
  return { schemaPath };
48
29
  }
49
30
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/server/handlers/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAM7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAMtC;IACC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEzD,2FAA2F;IAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,iFAAiF;IACjF,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAErE,kDAAkD;IAClD,MAAM,cAAc,GAAG;SAChB,KAAK,IAAI,aAAa;OACxB,GAAG;aACG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;;;;;UAKpC,KAAK,IAAI,GAAG;eACP,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;;EAEjD,QAAQ,IAAI,yCAAyC;;;;;;;EAOrD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;CAEhC,CAAC;IAEA,2BAA2B;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;IAE5D,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/server/handlers/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAMzD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAMtC;IACC,iEAAiE;IACjE,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,yCAAyC;;;;;;;EAO1E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;OAC/B,CAAC;IAEN,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC;QAC5C,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAa,eAAe,EAAE,MAAM,IAAI,CAAC;AAGhD,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAkErB,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AA0CnF;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,wGAAwG;IACxG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyFrF;AAED,4CAA4C;AAC5C,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD;AAED,kCAAkC;AAClC,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAEpD;AAidD,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAa,eAAe,EAAE,MAAM,IAAI,CAAC;AAGhD,OAAO,KAAK,EAGV,UAAU,EAGV,iBAAiB,EAWjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAkErB,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AA0CnF;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,wGAAwG;IACxG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyFrF;AAED,4CAA4C;AAC5C,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD;AAED,kCAAkC;AAClC,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAEpD;AAulBD,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B9C"}
@@ -165,6 +165,408 @@ export function getSweetlinkPort() {
165
165
  export function getAssociatedAppPort() {
166
166
  return associatedAppPort;
167
167
  }
168
+ // ============================================================================
169
+ // Individual Message Handlers
170
+ // ============================================================================
171
+ /** Handle browser client identification */
172
+ function handleBrowserClientReady(_command, ctx) {
173
+ const clientInfo = clients.get(ctx.ws);
174
+ clients.set(ctx.ws, { type: 'browser', id: ctx.clientId, origin: clientInfo?.origin });
175
+ console.log(`[Sweetlink] Browser client identified: ${ctx.clientId}`);
176
+ // Send server info back to the browser so it can verify connection
177
+ // Security: Don't expose projectDir to prevent path disclosure
178
+ ctx.ws.send(JSON.stringify({
179
+ type: 'server-info',
180
+ appPort: associatedAppPort,
181
+ wsPort: activePort,
182
+ timestamp: Date.now(),
183
+ }));
184
+ return true;
185
+ }
186
+ /** Handle API key check request from browser */
187
+ function handleCheckApiKey(_command, ctx) {
188
+ const apiKey = process.env.ANTHROPIC_API_KEY;
189
+ const hasKey = Boolean(apiKey && apiKey.length > 0);
190
+ // Security: Only return boolean, don't expose any key info
191
+ ctx.ws.send(JSON.stringify({
192
+ type: 'api-key-status',
193
+ configured: hasKey,
194
+ model: CLAUDE_MODEL,
195
+ pricing: CLAUDE_PRICING,
196
+ timestamp: Date.now(),
197
+ }));
198
+ return true;
199
+ }
200
+ /** Handle save-screenshot from browser */
201
+ async function handleSaveScreenshotMsg(command, ctx) {
202
+ if (!ctx.isBrowserClient)
203
+ return false;
204
+ if (!isSaveScreenshotData(command.data)) {
205
+ sendError(ctx.ws, 'screenshot-error', 'Invalid screenshot data');
206
+ return true;
207
+ }
208
+ try {
209
+ const savedPath = await handleSaveScreenshot(command.data);
210
+ console.log(`[Sweetlink] Screenshot saved to ${savedPath}`);
211
+ sendSuccess(ctx.ws, 'screenshot-saved', { path: savedPath });
212
+ }
213
+ catch (error) {
214
+ console.error('[Sweetlink] Screenshot save failed:', getErrorMessage(error));
215
+ sendError(ctx.ws, 'screenshot-error', error);
216
+ }
217
+ return true;
218
+ }
219
+ /** Handle design-review-screenshot from browser */
220
+ async function handleDesignReviewMsg(command, ctx) {
221
+ if (!ctx.isBrowserClient)
222
+ return false;
223
+ if (!isDesignReviewScreenshotData(command.data)) {
224
+ sendError(ctx.ws, 'design-review-error', 'Invalid design review data');
225
+ return true;
226
+ }
227
+ try {
228
+ const result = await handleDesignReviewScreenshot(command.data);
229
+ console.log(`[Sweetlink] Design review saved to ${result.reviewPath}`);
230
+ sendSuccess(ctx.ws, 'design-review-saved', {
231
+ screenshotPath: result.screenshotPath,
232
+ reviewPath: result.reviewPath,
233
+ });
234
+ }
235
+ catch (error) {
236
+ console.error('[Sweetlink] Design review failed:', getErrorMessage(error));
237
+ sendError(ctx.ws, 'design-review-error', error);
238
+ }
239
+ return true;
240
+ }
241
+ /** Handle save-outline from browser */
242
+ async function handleSaveOutlineMsg(command, ctx) {
243
+ if (!ctx.isBrowserClient)
244
+ return false;
245
+ if (!isSaveOutlineData(command.data)) {
246
+ sendError(ctx.ws, 'outline-error', 'Invalid outline data');
247
+ return true;
248
+ }
249
+ try {
250
+ const result = await handleSaveOutline(command.data);
251
+ console.log(`[Sweetlink] Outline saved to ${result.outlinePath}`);
252
+ sendSuccess(ctx.ws, 'outline-saved', { outlinePath: result.outlinePath });
253
+ }
254
+ catch (error) {
255
+ console.error('[Sweetlink] Outline save failed:', getErrorMessage(error));
256
+ sendError(ctx.ws, 'outline-error', error);
257
+ }
258
+ return true;
259
+ }
260
+ /** Handle save-schema from browser */
261
+ async function handleSaveSchemaMsg(command, ctx) {
262
+ if (!ctx.isBrowserClient)
263
+ return false;
264
+ if (!isSaveSchemaData(command.data)) {
265
+ sendError(ctx.ws, 'schema-error', 'Invalid schema data');
266
+ return true;
267
+ }
268
+ try {
269
+ const result = await handleSaveSchema(command.data);
270
+ console.log(`[Sweetlink] Schema saved to ${result.schemaPath}`);
271
+ sendSuccess(ctx.ws, 'schema-saved', { schemaPath: result.schemaPath });
272
+ }
273
+ catch (error) {
274
+ console.error('[Sweetlink] Schema save failed:', getErrorMessage(error));
275
+ sendError(ctx.ws, 'schema-error', error);
276
+ }
277
+ return true;
278
+ }
279
+ /** Handle save-console-logs from browser */
280
+ async function handleSaveConsoleLogsMsg(command, ctx) {
281
+ if (!ctx.isBrowserClient)
282
+ return false;
283
+ if (!isSaveConsoleLogsData(command.data)) {
284
+ sendError(ctx.ws, 'console-logs-error', 'Invalid console logs data');
285
+ return true;
286
+ }
287
+ try {
288
+ const result = await handleSaveConsoleLogs(command.data);
289
+ console.log(`[Sweetlink] Console logs saved to ${result.consoleLogsPath}`);
290
+ sendSuccess(ctx.ws, 'console-logs-saved', { consoleLogsPath: result.consoleLogsPath });
291
+ }
292
+ catch (error) {
293
+ console.error('[Sweetlink] Console logs save failed:', getErrorMessage(error));
294
+ sendError(ctx.ws, 'console-logs-error', error);
295
+ }
296
+ return true;
297
+ }
298
+ /** Handle save-settings from browser */
299
+ async function handleSaveSettingsMsg(command, ctx) {
300
+ if (!ctx.isBrowserClient)
301
+ return false;
302
+ if (!isSaveSettingsData(command.data)) {
303
+ sendError(ctx.ws, 'settings-error', 'Invalid settings data');
304
+ return true;
305
+ }
306
+ try {
307
+ // Type assertion after validation - handler expects DevBarSettings
308
+ // Cast through unknown as the runtime validation ensures structure
309
+ const result = await handleSaveSettings(command.data);
310
+ console.log(`[Sweetlink] Settings saved to ${result.settingsPath}`);
311
+ sendSuccess(ctx.ws, 'settings-saved', { settingsPath: result.settingsPath });
312
+ }
313
+ catch (error) {
314
+ console.error('[Sweetlink] Settings save failed:', getErrorMessage(error));
315
+ sendError(ctx.ws, 'settings-error', error);
316
+ }
317
+ return true;
318
+ }
319
+ /** Handle load-settings from browser */
320
+ async function handleLoadSettingsMsg(_command, ctx) {
321
+ if (ctx.clientInfo?.type !== 'browser')
322
+ return false;
323
+ try {
324
+ const settings = await handleLoadSettings();
325
+ sendSuccess(ctx.ws, 'settings-loaded', { settings });
326
+ }
327
+ catch (error) {
328
+ console.error('[Sweetlink] Settings load failed:', error instanceof Error ? error.message : error);
329
+ sendError(ctx.ws, 'settings-error', error);
330
+ }
331
+ return true;
332
+ }
333
+ /** Handle request-screenshot from CLI/Agent */
334
+ function handleRequestScreenshot(command, ctx) {
335
+ if (ctx.clientInfo?.type !== 'cli')
336
+ return false;
337
+ const requestId = command.requestId || `req-${Date.now()}`;
338
+ console.log(`[Sweetlink] Screenshot request ${requestId} from CLI`);
339
+ const browserClients = Array.from(clients.entries())
340
+ .filter(([, info]) => info.type === 'browser')
341
+ .map(([client]) => client);
342
+ if (browserClients.length === 0) {
343
+ ctx.ws.send(JSON.stringify({
344
+ type: 'screenshot-response',
345
+ requestId,
346
+ success: false,
347
+ error: 'No browser client connected',
348
+ timestamp: Date.now(),
349
+ }));
350
+ return true;
351
+ }
352
+ const timeout = setTimeout(() => {
353
+ const pending = pendingScreenshotRequests.get(requestId);
354
+ if (pending) {
355
+ pendingScreenshotRequests.delete(requestId);
356
+ pending.clientWs.send(JSON.stringify({
357
+ type: 'screenshot-response',
358
+ requestId,
359
+ success: false,
360
+ error: 'Screenshot request timed out',
361
+ timestamp: Date.now(),
362
+ }));
363
+ }
364
+ }, SCREENSHOT_REQUEST_TIMEOUT_MS);
365
+ pendingScreenshotRequests.set(requestId, { requestId, clientWs: ctx.ws, timeout });
366
+ browserClients[0].send(JSON.stringify({
367
+ type: 'request-screenshot',
368
+ requestId,
369
+ selector: command.selector,
370
+ format: command.format || 'jpeg',
371
+ quality: command.quality || 0.7,
372
+ scale: command.scale || 0.25,
373
+ includeMetadata: command.includeMetadata !== false,
374
+ }));
375
+ return true;
376
+ }
377
+ /** Handle screenshot-response from browser */
378
+ function handleScreenshotResponse(command, ctx) {
379
+ if (ctx.clientInfo?.type !== 'browser' || !command.requestId)
380
+ return false;
381
+ const pending = pendingScreenshotRequests.get(command.requestId);
382
+ if (pending) {
383
+ clearTimeout(pending.timeout);
384
+ pendingScreenshotRequests.delete(command.requestId);
385
+ if (pending.clientWs.readyState === WebSocket.OPEN) {
386
+ pending.clientWs.send(ctx.rawMessage.toString());
387
+ }
388
+ }
389
+ return true;
390
+ }
391
+ /** Handle channel subscription (e.g., 'hmr-screenshots') */
392
+ function handleSubscribe(command, ctx) {
393
+ const channel = command.channel;
394
+ if (channel) {
395
+ console.log(`[Sweetlink] Client subscribing to channel: ${channel}`);
396
+ if (!channelSubscriptions.has(channel)) {
397
+ channelSubscriptions.set(channel, []);
398
+ }
399
+ channelSubscriptions.get(channel).push({ channel, clientWs: ctx.ws });
400
+ sendSuccess(ctx.ws, 'subscribed', { channel });
401
+ return true;
402
+ }
403
+ return false;
404
+ }
405
+ /** Handle channel unsubscription */
406
+ function handleUnsubscribe(command, ctx) {
407
+ const channel = command.channel;
408
+ if (channel && channelSubscriptions.has(channel)) {
409
+ const subs = channelSubscriptions.get(channel);
410
+ const idx = subs.findIndex((s) => s.clientWs === ctx.ws);
411
+ if (idx !== -1) {
412
+ subs.splice(idx, 1);
413
+ console.log(`[Sweetlink] Client unsubscribed from channel: ${channel}`);
414
+ }
415
+ sendSuccess(ctx.ws, 'unsubscribed', { channel });
416
+ return true;
417
+ }
418
+ return false;
419
+ }
420
+ /** Handle log subscription */
421
+ function handleLogSubscribe(command, ctx) {
422
+ const subscriptionId = command.subscriptionId || `log-${Date.now()}`;
423
+ console.log(`[Sweetlink] Log subscription created: ${subscriptionId}`);
424
+ logSubscriptions.set(subscriptionId, {
425
+ subscriptionId,
426
+ clientWs: ctx.ws,
427
+ filters: command.filters,
428
+ });
429
+ sendSuccess(ctx.ws, 'log-subscribed', { subscriptionId });
430
+ return true;
431
+ }
432
+ /** Handle log unsubscription */
433
+ function handleLogUnsubscribe(command, ctx) {
434
+ if (command.subscriptionId && logSubscriptions.has(command.subscriptionId)) {
435
+ logSubscriptions.delete(command.subscriptionId);
436
+ console.log(`[Sweetlink] Log subscription removed: ${command.subscriptionId}`);
437
+ sendSuccess(ctx.ws, 'log-unsubscribed', { subscriptionId: command.subscriptionId });
438
+ }
439
+ return true;
440
+ }
441
+ /** Handle HMR screenshot from browser */
442
+ async function handleHmrScreenshotMsg(command, ctx) {
443
+ if (ctx.clientInfo?.type !== 'browser' || !command.data)
444
+ return false;
445
+ const hmrData = command.data;
446
+ hmrSequenceNumber++;
447
+ console.log(`[Sweetlink] HMR screenshot received (${hmrData.trigger})`);
448
+ if (hmrData.changedFile) {
449
+ console.log(`[Sweetlink] Changed file: ${hmrData.changedFile}`);
450
+ }
451
+ const result = await handleHmrScreenshot(hmrData);
452
+ const notificationData = {
453
+ screenshotPath: result.screenshotPath,
454
+ logsPath: result.logsPath,
455
+ trigger: hmrData.trigger,
456
+ changedFile: hmrData.changedFile,
457
+ timestamp: hmrData.timestamp,
458
+ sequenceNumber: hmrSequenceNumber,
459
+ logSummary: result.logSummary,
460
+ };
461
+ const subscribers = channelSubscriptions.get('hmr-screenshots') || [];
462
+ for (const sub of subscribers) {
463
+ if (sub.clientWs.readyState === WebSocket.OPEN) {
464
+ sendSuccess(sub.clientWs, 'hmr-screenshot-saved', notificationData);
465
+ }
466
+ }
467
+ sendSuccess(ctx.ws, 'hmr-screenshot-saved', {
468
+ screenshotPath: result.screenshotPath,
469
+ logsPath: result.logsPath,
470
+ sequenceNumber: hmrSequenceNumber,
471
+ });
472
+ return true;
473
+ }
474
+ /** Handle log-event from browser (for streaming to subscribers) */
475
+ function handleLogEvent(command, ctx) {
476
+ if (ctx.clientInfo?.type !== 'browser' || !command.data)
477
+ return false;
478
+ const log = command.data;
479
+ for (const [, sub] of logSubscriptions) {
480
+ if (sub.clientWs.readyState !== WebSocket.OPEN)
481
+ continue;
482
+ if (sub.filters) {
483
+ if (sub.filters.levels && !sub.filters.levels.includes(log.level))
484
+ continue;
485
+ if (sub.filters.pattern) {
486
+ try {
487
+ const regex = safeRegex(sub.filters.pattern);
488
+ if (!regex.test(log.message))
489
+ continue;
490
+ }
491
+ catch {
492
+ console.warn(`[Sweetlink] Skipping invalid regex pattern: ${sub.filters.pattern}`);
493
+ }
494
+ }
495
+ if (sub.filters.source && log.source !== sub.filters.source)
496
+ continue;
497
+ }
498
+ sub.clientWs.send(JSON.stringify({
499
+ type: 'log-event',
500
+ subscriptionId: sub.subscriptionId,
501
+ log,
502
+ timestamp: Date.now(),
503
+ }));
504
+ }
505
+ return true;
506
+ }
507
+ // ============================================================================
508
+ // Dispatch Map
509
+ // ============================================================================
510
+ /**
511
+ * Map of message type to handler function.
512
+ *
513
+ * Each handler is typed with its specific command variant for type safety
514
+ * within the handler body. The dispatch map casts to MessageHandler since
515
+ * we look up by the command.type field, guaranteeing the correct variant
516
+ * is passed to the matching handler at runtime.
517
+ */
518
+ const messageHandlers = {
519
+ 'browser-client-ready': handleBrowserClientReady,
520
+ 'check-api-key': handleCheckApiKey,
521
+ 'save-screenshot': handleSaveScreenshotMsg,
522
+ 'design-review-screenshot': handleDesignReviewMsg,
523
+ 'save-outline': handleSaveOutlineMsg,
524
+ 'save-schema': handleSaveSchemaMsg,
525
+ 'save-console-logs': handleSaveConsoleLogsMsg,
526
+ 'save-settings': handleSaveSettingsMsg,
527
+ 'load-settings': handleLoadSettingsMsg,
528
+ 'request-screenshot': handleRequestScreenshot,
529
+ 'screenshot-response': handleScreenshotResponse,
530
+ 'subscribe': handleSubscribe,
531
+ 'unsubscribe': handleUnsubscribe,
532
+ 'log-subscribe': handleLogSubscribe,
533
+ 'log-unsubscribe': handleLogUnsubscribe,
534
+ 'hmr-screenshot': handleHmrScreenshotMsg,
535
+ 'log-event': handleLogEvent,
536
+ };
537
+ /**
538
+ * Forward unhandled messages between CLI and browser clients.
539
+ * CLI commands are forwarded to the browser; browser responses are forwarded to the CLI.
540
+ */
541
+ function forwardMessage(ctx, command) {
542
+ if (ctx.clientInfo?.type === 'cli') {
543
+ console.log(`[Sweetlink] Received command from CLI: ${command.type}`);
544
+ const browserClients = Array.from(clients.entries())
545
+ .filter(([, info]) => info.type === 'browser')
546
+ .map(([client]) => client);
547
+ if (browserClients.length === 0) {
548
+ ctx.ws.send(JSON.stringify({
549
+ success: false,
550
+ error: 'No browser client connected. Is the dev server running with the page open?',
551
+ timestamp: Date.now(),
552
+ }));
553
+ return;
554
+ }
555
+ const browserWs = browserClients[0];
556
+ cliClientMap.set(browserWs, ctx.ws);
557
+ browserWs.send(ctx.rawMessage.toString());
558
+ }
559
+ else if (ctx.clientInfo?.type === 'browser') {
560
+ const cliWs = cliClientMap.get(ctx.ws);
561
+ if (cliWs && cliWs.readyState === WebSocket.OPEN) {
562
+ cliWs.send(ctx.rawMessage.toString());
563
+ cliClientMap.delete(ctx.ws);
564
+ }
565
+ }
566
+ }
567
+ // ============================================================================
568
+ // Server Setup
569
+ // ============================================================================
168
570
  function setupServerHandlers(server) {
169
571
  server.on('connection', (ws, req) => {
170
572
  const clientId = `${req.socket.remoteAddress}:${req.socket.remotePort}`;
@@ -200,346 +602,23 @@ function setupServerHandlers(server) {
200
602
  if (command.type) {
201
603
  console.log('[Sweetlink] Received message type:', command.type);
202
604
  }
203
- // Handle browser client identification
204
- if (command.type === 'browser-client-ready') {
205
- const clientInfo = clients.get(ws);
206
- clients.set(ws, { type: 'browser', id: clientId, origin: clientInfo?.origin });
207
- console.log(`[Sweetlink] Browser client identified: ${clientId}`);
208
- // Send server info back to the browser so it can verify connection
209
- // Security: Don't expose projectDir to prevent path disclosure
210
- ws.send(JSON.stringify({
211
- type: 'server-info',
212
- appPort: associatedAppPort,
213
- wsPort: activePort,
214
- timestamp: Date.now(),
215
- }));
216
- return;
217
- }
218
- // Handle API key check request from browser
219
- if (command.type === 'check-api-key') {
220
- const apiKey = process.env.ANTHROPIC_API_KEY;
221
- const hasKey = Boolean(apiKey && apiKey.length > 0);
222
- // Security: Only return boolean, don't expose any key info
223
- ws.send(JSON.stringify({
224
- type: 'api-key-status',
225
- configured: hasKey,
226
- model: CLAUDE_MODEL,
227
- pricing: CLAUDE_PRICING,
228
- timestamp: Date.now(),
229
- }));
230
- return;
231
- }
232
- // Handle browser-originated save commands
233
605
  const clientInfo = clients.get(ws);
234
- const isBrowserClient = clientInfo?.type === 'browser';
235
- if (command.type === 'save-screenshot' && isBrowserClient) {
236
- if (!isSaveScreenshotData(command.data)) {
237
- sendError(ws, 'screenshot-error', 'Invalid screenshot data');
238
- return;
239
- }
240
- try {
241
- const savedPath = await handleSaveScreenshot(command.data);
242
- console.log(`[Sweetlink] Screenshot saved to ${savedPath}`);
243
- sendSuccess(ws, 'screenshot-saved', { path: savedPath });
244
- }
245
- catch (error) {
246
- console.error('[Sweetlink] Screenshot save failed:', getErrorMessage(error));
247
- sendError(ws, 'screenshot-error', error);
248
- }
249
- return;
250
- }
251
- if (command.type === 'design-review-screenshot' && isBrowserClient) {
252
- if (!isDesignReviewScreenshotData(command.data)) {
253
- sendError(ws, 'design-review-error', 'Invalid design review data');
606
+ const ctx = {
607
+ ws,
608
+ rawMessage: message,
609
+ clientId,
610
+ clientInfo,
611
+ isBrowserClient: clientInfo?.type === 'browser',
612
+ };
613
+ // Look up handler in dispatch map
614
+ const handler = messageHandlers[command.type];
615
+ if (handler) {
616
+ const handled = await handler(command, ctx);
617
+ if (handled !== false)
254
618
  return;
255
- }
256
- try {
257
- const result = await handleDesignReviewScreenshot(command.data);
258
- console.log(`[Sweetlink] Design review saved to ${result.reviewPath}`);
259
- sendSuccess(ws, 'design-review-saved', {
260
- screenshotPath: result.screenshotPath,
261
- reviewPath: result.reviewPath,
262
- });
263
- }
264
- catch (error) {
265
- console.error('[Sweetlink] Design review failed:', getErrorMessage(error));
266
- sendError(ws, 'design-review-error', error);
267
- }
268
- return;
269
- }
270
- if (command.type === 'save-outline' && isBrowserClient) {
271
- if (!isSaveOutlineData(command.data)) {
272
- sendError(ws, 'outline-error', 'Invalid outline data');
273
- return;
274
- }
275
- try {
276
- const result = await handleSaveOutline(command.data);
277
- console.log(`[Sweetlink] Outline saved to ${result.outlinePath}`);
278
- sendSuccess(ws, 'outline-saved', { outlinePath: result.outlinePath });
279
- }
280
- catch (error) {
281
- console.error('[Sweetlink] Outline save failed:', getErrorMessage(error));
282
- sendError(ws, 'outline-error', error);
283
- }
284
- return;
285
- }
286
- if (command.type === 'save-schema' && isBrowserClient) {
287
- if (!isSaveSchemaData(command.data)) {
288
- sendError(ws, 'schema-error', 'Invalid schema data');
289
- return;
290
- }
291
- try {
292
- const result = await handleSaveSchema(command.data);
293
- console.log(`[Sweetlink] Schema saved to ${result.schemaPath}`);
294
- sendSuccess(ws, 'schema-saved', { schemaPath: result.schemaPath });
295
- }
296
- catch (error) {
297
- console.error('[Sweetlink] Schema save failed:', getErrorMessage(error));
298
- sendError(ws, 'schema-error', error);
299
- }
300
- return;
301
- }
302
- if (command.type === 'save-console-logs' && isBrowserClient) {
303
- if (!isSaveConsoleLogsData(command.data)) {
304
- sendError(ws, 'console-logs-error', 'Invalid console logs data');
305
- return;
306
- }
307
- try {
308
- const result = await handleSaveConsoleLogs(command.data);
309
- console.log(`[Sweetlink] Console logs saved to ${result.consoleLogsPath}`);
310
- sendSuccess(ws, 'console-logs-saved', { consoleLogsPath: result.consoleLogsPath });
311
- }
312
- catch (error) {
313
- console.error('[Sweetlink] Console logs save failed:', getErrorMessage(error));
314
- sendError(ws, 'console-logs-error', error);
315
- }
316
- return;
317
- }
318
- // Handle save-settings from browser
319
- if (command.type === 'save-settings' && isBrowserClient) {
320
- if (!isSaveSettingsData(command.data)) {
321
- sendError(ws, 'settings-error', 'Invalid settings data');
322
- return;
323
- }
324
- try {
325
- // Type assertion after validation - handler expects DevBarSettings
326
- // Cast through unknown as the runtime validation ensures structure
327
- const result = await handleSaveSettings(command.data);
328
- console.log(`[Sweetlink] Settings saved to ${result.settingsPath}`);
329
- sendSuccess(ws, 'settings-saved', { settingsPath: result.settingsPath });
330
- }
331
- catch (error) {
332
- console.error('[Sweetlink] Settings save failed:', getErrorMessage(error));
333
- sendError(ws, 'settings-error', error);
334
- }
335
- return;
336
- }
337
- // Handle load-settings from browser
338
- if (command.type === 'load-settings' && clientInfo?.type === 'browser') {
339
- try {
340
- const settings = await handleLoadSettings();
341
- sendSuccess(ws, 'settings-loaded', { settings });
342
- }
343
- catch (error) {
344
- console.error('[Sweetlink] Settings load failed:', error instanceof Error ? error.message : error);
345
- sendError(ws, 'settings-error', error);
346
- }
347
- return;
348
- }
349
- // ============================================================================
350
- // v1.4.0: New message handlers
351
- // ============================================================================
352
- // Handle request-screenshot from CLI/Agent
353
- if (command.type === 'request-screenshot' && clientInfo?.type === 'cli') {
354
- const requestId = command.requestId || `req-${Date.now()}`;
355
- console.log(`[Sweetlink] Screenshot request ${requestId} from CLI`);
356
- const browserClients = Array.from(clients.entries())
357
- .filter(([, info]) => info.type === 'browser')
358
- .map(([client]) => client);
359
- if (browserClients.length === 0) {
360
- ws.send(JSON.stringify({
361
- type: 'screenshot-response',
362
- requestId,
363
- success: false,
364
- error: 'No browser client connected',
365
- timestamp: Date.now(),
366
- }));
367
- return;
368
- }
369
- const timeout = setTimeout(() => {
370
- const pending = pendingScreenshotRequests.get(requestId);
371
- if (pending) {
372
- pendingScreenshotRequests.delete(requestId);
373
- pending.clientWs.send(JSON.stringify({
374
- type: 'screenshot-response',
375
- requestId,
376
- success: false,
377
- error: 'Screenshot request timed out',
378
- timestamp: Date.now(),
379
- }));
380
- }
381
- }, SCREENSHOT_REQUEST_TIMEOUT_MS);
382
- pendingScreenshotRequests.set(requestId, { requestId, clientWs: ws, timeout });
383
- browserClients[0].send(JSON.stringify({
384
- type: 'request-screenshot',
385
- requestId,
386
- selector: command.selector,
387
- format: command.format || 'jpeg',
388
- quality: command.quality || 0.7,
389
- scale: command.scale || 0.25,
390
- includeMetadata: command.includeMetadata !== false,
391
- }));
392
- return;
393
- }
394
- // Handle screenshot-response from browser
395
- if (command.type === 'screenshot-response' &&
396
- clientInfo?.type === 'browser' &&
397
- command.requestId) {
398
- const pending = pendingScreenshotRequests.get(command.requestId);
399
- if (pending) {
400
- clearTimeout(pending.timeout);
401
- pendingScreenshotRequests.delete(command.requestId);
402
- if (pending.clientWs.readyState === WebSocket.OPEN) {
403
- pending.clientWs.send(message.toString());
404
- }
405
- }
406
- return;
407
- }
408
- // Handle channel subscription (e.g., 'hmr-screenshots')
409
- if (command.type === 'subscribe') {
410
- const channel = command.channel;
411
- if (channel) {
412
- console.log(`[Sweetlink] Client subscribing to channel: ${channel}`);
413
- if (!channelSubscriptions.has(channel)) {
414
- channelSubscriptions.set(channel, []);
415
- }
416
- channelSubscriptions.get(channel).push({ channel, clientWs: ws });
417
- sendSuccess(ws, 'subscribed', { channel });
418
- return;
419
- }
420
- }
421
- // Handle channel unsubscription
422
- if (command.type === 'unsubscribe') {
423
- const channel = command.channel;
424
- if (channel && channelSubscriptions.has(channel)) {
425
- const subs = channelSubscriptions.get(channel);
426
- const idx = subs.findIndex((s) => s.clientWs === ws);
427
- if (idx !== -1) {
428
- subs.splice(idx, 1);
429
- console.log(`[Sweetlink] Client unsubscribed from channel: ${channel}`);
430
- }
431
- sendSuccess(ws, 'unsubscribed', { channel });
432
- return;
433
- }
434
- }
435
- // Handle log subscription
436
- if (command.type === 'log-subscribe') {
437
- const subscriptionId = command.subscriptionId || `log-${Date.now()}`;
438
- console.log(`[Sweetlink] Log subscription created: ${subscriptionId}`);
439
- logSubscriptions.set(subscriptionId, {
440
- subscriptionId,
441
- clientWs: ws,
442
- filters: command.filters,
443
- });
444
- sendSuccess(ws, 'log-subscribed', { subscriptionId });
445
- return;
446
- }
447
- // Handle log unsubscription
448
- if (command.type === 'log-unsubscribe') {
449
- if (command.subscriptionId && logSubscriptions.has(command.subscriptionId)) {
450
- logSubscriptions.delete(command.subscriptionId);
451
- console.log(`[Sweetlink] Log subscription removed: ${command.subscriptionId}`);
452
- sendSuccess(ws, 'log-unsubscribed', { subscriptionId: command.subscriptionId });
453
- }
454
- return;
455
- }
456
- // Handle HMR screenshot from browser
457
- if (command.type === 'hmr-screenshot' && clientInfo?.type === 'browser' && command.data) {
458
- const hmrData = command.data;
459
- hmrSequenceNumber++;
460
- console.log(`[Sweetlink] HMR screenshot received (${hmrData.trigger})`);
461
- if (hmrData.changedFile) {
462
- console.log(`[Sweetlink] Changed file: ${hmrData.changedFile}`);
463
- }
464
- const result = await handleHmrScreenshot(hmrData);
465
- const notificationData = {
466
- screenshotPath: result.screenshotPath,
467
- logsPath: result.logsPath,
468
- trigger: hmrData.trigger,
469
- changedFile: hmrData.changedFile,
470
- timestamp: hmrData.timestamp,
471
- sequenceNumber: hmrSequenceNumber,
472
- logSummary: result.logSummary,
473
- };
474
- const subscribers = channelSubscriptions.get('hmr-screenshots') || [];
475
- for (const sub of subscribers) {
476
- if (sub.clientWs.readyState === WebSocket.OPEN) {
477
- sendSuccess(sub.clientWs, 'hmr-screenshot-saved', notificationData);
478
- }
479
- }
480
- sendSuccess(ws, 'hmr-screenshot-saved', {
481
- screenshotPath: result.screenshotPath,
482
- logsPath: result.logsPath,
483
- sequenceNumber: hmrSequenceNumber,
484
- });
485
- return;
486
- }
487
- // Handle log-event from browser (for streaming to subscribers)
488
- if (command.type === 'log-event' && clientInfo?.type === 'browser' && command.data) {
489
- const log = command.data;
490
- for (const [, sub] of logSubscriptions) {
491
- if (sub.clientWs.readyState !== WebSocket.OPEN)
492
- continue;
493
- if (sub.filters) {
494
- if (sub.filters.levels && !sub.filters.levels.includes(log.level))
495
- continue;
496
- if (sub.filters.pattern) {
497
- try {
498
- const regex = safeRegex(sub.filters.pattern);
499
- if (!regex.test(log.message))
500
- continue;
501
- }
502
- catch {
503
- console.warn(`[Sweetlink] Skipping invalid regex pattern: ${sub.filters.pattern}`);
504
- }
505
- }
506
- if (sub.filters.source && log.source !== sub.filters.source)
507
- continue;
508
- }
509
- sub.clientWs.send(JSON.stringify({
510
- type: 'log-event',
511
- subscriptionId: sub.subscriptionId,
512
- log,
513
- timestamp: Date.now(),
514
- }));
515
- }
516
- return;
517
- }
518
- // Forward CLI commands to browser, browser responses to CLI
519
- if (clientInfo?.type === 'cli') {
520
- console.log(`[Sweetlink] Received command from CLI: ${command.type}`);
521
- const browserClients = Array.from(clients.entries())
522
- .filter(([, info]) => info.type === 'browser')
523
- .map(([client]) => client);
524
- if (browserClients.length === 0) {
525
- ws.send(JSON.stringify({
526
- success: false,
527
- error: 'No browser client connected. Is the dev server running with the page open?',
528
- timestamp: Date.now(),
529
- }));
530
- return;
531
- }
532
- const browserWs = browserClients[0];
533
- cliClientMap.set(browserWs, ws);
534
- browserWs.send(message.toString());
535
- }
536
- else if (clientInfo?.type === 'browser') {
537
- const cliWs = cliClientMap.get(ws);
538
- if (cliWs && cliWs.readyState === WebSocket.OPEN) {
539
- cliWs.send(message.toString());
540
- cliClientMap.delete(ws);
541
- }
542
619
  }
620
+ // No handler matched (or handler returned false) — forward between CLI/browser
621
+ forwardMessage(ctx, command);
543
622
  }
544
623
  catch (error) {
545
624
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ytspar/sweetlink",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Autonomous development toolkit for AI agents - screenshots, DOM queries, console logs, and JavaScript execution via WebSocket and Chrome DevTools Protocol",
5
5
  "keywords": [
6
6
  "autonomous-development",