@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.
- package/dist/browser/screenshotUtils.d.ts +2 -4
- package/dist/browser/screenshotUtils.d.ts.map +1 -1
- package/dist/browser/screenshotUtils.js +2 -4
- package/dist/browser/screenshotUtils.js.map +1 -1
- package/dist/server/handlers/consoleLogs.d.ts.map +1 -1
- package/dist/server/handlers/consoleLogs.js +8 -29
- package/dist/server/handlers/consoleLogs.js.map +1 -1
- package/dist/server/handlers/index.d.ts +1 -0
- package/dist/server/handlers/index.d.ts.map +1 -1
- package/dist/server/handlers/index.js +1 -0
- package/dist/server/handlers/index.js.map +1 -1
- package/dist/server/handlers/outline.d.ts.map +1 -1
- package/dist/server/handlers/outline.js +8 -29
- package/dist/server/handlers/outline.js.map +1 -1
- package/dist/server/handlers/saveMarkdown.d.ts +20 -0
- package/dist/server/handlers/saveMarkdown.d.ts.map +1 -0
- package/dist/server/handlers/saveMarkdown.js +52 -0
- package/dist/server/handlers/saveMarkdown.js.map +1 -0
- package/dist/server/handlers/schema.d.ts.map +1 -1
- package/dist/server/handlers/schema.js +12 -31
- package/dist/server/handlers/schema.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +416 -337
- package/dist/server/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
/**
|
|
12
|
-
export declare const
|
|
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,
|
|
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
|
-
/**
|
|
15
|
-
export const
|
|
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":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,sCAAsC;AACtC,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,2BAA2B;AAC3B,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,
|
|
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;
|
|
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 {
|
|
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
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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,
|
|
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;
|
|
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 {
|
|
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
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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,
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
15
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/server/index.js
CHANGED
|
@@ -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
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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';
|
package/dist/server/index.js.map
CHANGED
|
@@ -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.
|
|
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",
|