@natchs/browser-mcp 2.0.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/README.md +141 -0
- package/dist/core/auth.d.ts +7 -0
- package/dist/core/auth.d.ts.map +1 -0
- package/dist/core/auth.js +23 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/cache.d.ts +24 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +67 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/config.d.ts +362 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +281 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context.d.ts +38 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +19 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/errors.d.ts +82 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +98 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/logger.d.ts +22 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +41 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/metrics.d.ts +24 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +59 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/network-capture.d.ts +117 -0
- package/dist/core/network-capture.d.ts.map +1 -0
- package/dist/core/network-capture.js +349 -0
- package/dist/core/network-capture.js.map +1 -0
- package/dist/core/network-export.d.ts +6 -0
- package/dist/core/network-export.d.ts.map +1 -0
- package/dist/core/network-export.js +163 -0
- package/dist/core/network-export.js.map +1 -0
- package/dist/core/output.d.ts +66 -0
- package/dist/core/output.d.ts.map +1 -0
- package/dist/core/output.js +114 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/pipeline.d.ts +25 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +52 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/plugin.d.ts +26 -0
- package/dist/core/plugin.d.ts.map +1 -0
- package/dist/core/plugin.js +49 -0
- package/dist/core/plugin.js.map +1 -0
- package/dist/core/rate-limit.d.ts +33 -0
- package/dist/core/rate-limit.d.ts.map +1 -0
- package/dist/core/rate-limit.js +89 -0
- package/dist/core/rate-limit.js.map +1 -0
- package/dist/core/registry.d.ts +67 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +270 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/sandbox.d.ts +20 -0
- package/dist/core/sandbox.d.ts.map +1 -0
- package/dist/core/sandbox.js +168 -0
- package/dist/core/sandbox.js.map +1 -0
- package/dist/core/schema-gen.d.ts +5 -0
- package/dist/core/schema-gen.d.ts.map +1 -0
- package/dist/core/schema-gen.js +115 -0
- package/dist/core/schema-gen.js.map +1 -0
- package/dist/core/session.d.ts +88 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +300 -0
- package/dist/core/session.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +192 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +11 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +121 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/tools/admin/cache.d.ts +7 -0
- package/dist/tools/admin/cache.d.ts.map +1 -0
- package/dist/tools/admin/cache.js +27 -0
- package/dist/tools/admin/cache.js.map +1 -0
- package/dist/tools/admin/index.d.ts +3 -0
- package/dist/tools/admin/index.d.ts.map +1 -0
- package/dist/tools/admin/index.js +9 -0
- package/dist/tools/admin/index.js.map +1 -0
- package/dist/tools/admin/server-status.d.ts +14 -0
- package/dist/tools/admin/server-status.d.ts.map +1 -0
- package/dist/tools/admin/server-status.js +33 -0
- package/dist/tools/admin/server-status.js.map +1 -0
- package/dist/tools/browser/cookies.d.ts +46 -0
- package/dist/tools/browser/cookies.d.ts.map +1 -0
- package/dist/tools/browser/cookies.js +65 -0
- package/dist/tools/browser/cookies.js.map +1 -0
- package/dist/tools/browser/evaluate.d.ts +12 -0
- package/dist/tools/browser/evaluate.d.ts.map +1 -0
- package/dist/tools/browser/evaluate.js +61 -0
- package/dist/tools/browser/evaluate.js.map +1 -0
- package/dist/tools/browser/index.d.ts +3 -0
- package/dist/tools/browser/index.d.ts.map +1 -0
- package/dist/tools/browser/index.js +17 -0
- package/dist/tools/browser/index.js.map +1 -0
- package/dist/tools/browser/page-info.d.ts +6 -0
- package/dist/tools/browser/page-info.d.ts.map +1 -0
- package/dist/tools/browser/page-info.js +25 -0
- package/dist/tools/browser/page-info.js.map +1 -0
- package/dist/tools/browser/pdf.d.ts +45 -0
- package/dist/tools/browser/pdf.d.ts.map +1 -0
- package/dist/tools/browser/pdf.js +57 -0
- package/dist/tools/browser/pdf.js.map +1 -0
- package/dist/tools/browser/screenshot.d.ts +21 -0
- package/dist/tools/browser/screenshot.d.ts.map +1 -0
- package/dist/tools/browser/screenshot.js +41 -0
- package/dist/tools/browser/screenshot.js.map +1 -0
- package/dist/tools/extraction/extract-css.d.ts +33 -0
- package/dist/tools/extraction/extract-css.d.ts.map +1 -0
- package/dist/tools/extraction/extract-css.js +112 -0
- package/dist/tools/extraction/extract-css.js.map +1 -0
- package/dist/tools/extraction/extract.d.ts +10 -0
- package/dist/tools/extraction/extract.d.ts.map +1 -0
- package/dist/tools/extraction/extract.js +71 -0
- package/dist/tools/extraction/extract.js.map +1 -0
- package/dist/tools/extraction/index.d.ts +3 -0
- package/dist/tools/extraction/index.d.ts.map +1 -0
- package/dist/tools/extraction/index.js +17 -0
- package/dist/tools/extraction/index.js.map +1 -0
- package/dist/tools/interaction/click.d.ts +15 -0
- package/dist/tools/interaction/click.d.ts.map +1 -0
- package/dist/tools/interaction/click.js +31 -0
- package/dist/tools/interaction/click.js.map +1 -0
- package/dist/tools/interaction/drag.d.ts +18 -0
- package/dist/tools/interaction/drag.d.ts.map +1 -0
- package/dist/tools/interaction/drag.js +27 -0
- package/dist/tools/interaction/drag.js.map +1 -0
- package/dist/tools/interaction/file-upload.d.ts +18 -0
- package/dist/tools/interaction/file-upload.d.ts.map +1 -0
- package/dist/tools/interaction/file-upload.js +37 -0
- package/dist/tools/interaction/file-upload.js.map +1 -0
- package/dist/tools/interaction/fill.d.ts +18 -0
- package/dist/tools/interaction/fill.d.ts.map +1 -0
- package/dist/tools/interaction/fill.js +34 -0
- package/dist/tools/interaction/fill.js.map +1 -0
- package/dist/tools/interaction/hover.d.ts +15 -0
- package/dist/tools/interaction/hover.d.ts.map +1 -0
- package/dist/tools/interaction/hover.js +26 -0
- package/dist/tools/interaction/hover.js.map +1 -0
- package/dist/tools/interaction/index.d.ts +3 -0
- package/dist/tools/interaction/index.d.ts.map +1 -0
- package/dist/tools/interaction/index.js +19 -0
- package/dist/tools/interaction/index.js.map +1 -0
- package/dist/tools/interaction/press-key.d.ts +12 -0
- package/dist/tools/interaction/press-key.d.ts.map +1 -0
- package/dist/tools/interaction/press-key.js +24 -0
- package/dist/tools/interaction/press-key.js.map +1 -0
- package/dist/tools/interaction/select.d.ts +18 -0
- package/dist/tools/interaction/select.d.ts.map +1 -0
- package/dist/tools/interaction/select.js +28 -0
- package/dist/tools/interaction/select.js.map +1 -0
- package/dist/tools/interaction/type.d.ts +21 -0
- package/dist/tools/interaction/type.d.ts.map +1 -0
- package/dist/tools/interaction/type.js +30 -0
- package/dist/tools/interaction/type.js.map +1 -0
- package/dist/tools/navigation/back.d.ts +6 -0
- package/dist/tools/navigation/back.d.ts.map +1 -0
- package/dist/tools/navigation/back.js +16 -0
- package/dist/tools/navigation/back.js.map +1 -0
- package/dist/tools/navigation/forward.d.ts +6 -0
- package/dist/tools/navigation/forward.d.ts.map +1 -0
- package/dist/tools/navigation/forward.js +16 -0
- package/dist/tools/navigation/forward.js.map +1 -0
- package/dist/tools/navigation/index.d.ts +3 -0
- package/dist/tools/navigation/index.d.ts.map +1 -0
- package/dist/tools/navigation/index.js +13 -0
- package/dist/tools/navigation/index.js.map +1 -0
- package/dist/tools/navigation/navigate.d.ts +19 -0
- package/dist/tools/navigation/navigate.d.ts.map +1 -0
- package/dist/tools/navigation/navigate.js +52 -0
- package/dist/tools/navigation/navigate.js.map +1 -0
- package/dist/tools/navigation/refresh.d.ts +15 -0
- package/dist/tools/navigation/refresh.d.ts.map +1 -0
- package/dist/tools/navigation/refresh.js +26 -0
- package/dist/tools/navigation/refresh.js.map +1 -0
- package/dist/tools/navigation/wait-for.d.ts +12 -0
- package/dist/tools/navigation/wait-for.d.ts.map +1 -0
- package/dist/tools/navigation/wait-for.js +23 -0
- package/dist/tools/navigation/wait-for.js.map +1 -0
- package/dist/tools/network/console.d.ts +17 -0
- package/dist/tools/network/console.d.ts.map +1 -0
- package/dist/tools/network/console.js +29 -0
- package/dist/tools/network/console.js.map +1 -0
- package/dist/tools/network/dialog.d.ts +14 -0
- package/dist/tools/network/dialog.d.ts.map +1 -0
- package/dist/tools/network/dialog.js +34 -0
- package/dist/tools/network/dialog.js.map +1 -0
- package/dist/tools/network/index.d.ts +3 -0
- package/dist/tools/network/index.d.ts.map +1 -0
- package/dist/tools/network/index.js +21 -0
- package/dist/tools/network/index.js.map +1 -0
- package/dist/tools/network/network-clear.d.ts +11 -0
- package/dist/tools/network/network-clear.d.ts.map +1 -0
- package/dist/tools/network/network-clear.js +24 -0
- package/dist/tools/network/network-clear.js.map +1 -0
- package/dist/tools/network/network-entries.d.ts +35 -0
- package/dist/tools/network/network-entries.d.ts.map +1 -0
- package/dist/tools/network/network-entries.js +73 -0
- package/dist/tools/network/network-entries.js.map +1 -0
- package/dist/tools/network/network-export.d.ts +14 -0
- package/dist/tools/network/network-export.d.ts.map +1 -0
- package/dist/tools/network/network-export.js +24 -0
- package/dist/tools/network/network-export.js.map +1 -0
- package/dist/tools/network/network-requests.d.ts +20 -0
- package/dist/tools/network/network-requests.d.ts.map +1 -0
- package/dist/tools/network/network-requests.js +36 -0
- package/dist/tools/network/network-requests.js.map +1 -0
- package/dist/tools/network/network-response.d.ts +14 -0
- package/dist/tools/network/network-response.d.ts.map +1 -0
- package/dist/tools/network/network-response.js +56 -0
- package/dist/tools/network/network-response.js.map +1 -0
- package/dist/tools/network/wait-nav.d.ts +15 -0
- package/dist/tools/network/wait-nav.d.ts.map +1 -0
- package/dist/tools/network/wait-nav.js +26 -0
- package/dist/tools/network/wait-nav.js.map +1 -0
- package/dist/tools/network/websocket-frames.d.ts +17 -0
- package/dist/tools/network/websocket-frames.d.ts.map +1 -0
- package/dist/tools/network/websocket-frames.js +24 -0
- package/dist/tools/network/websocket-frames.js.map +1 -0
- package/dist/tools/re/api-discover.d.ts +11 -0
- package/dist/tools/re/api-discover.d.ts.map +1 -0
- package/dist/tools/re/api-discover.js +57 -0
- package/dist/tools/re/api-discover.js.map +1 -0
- package/dist/tools/re/auth-analyze.d.ts +11 -0
- package/dist/tools/re/auth-analyze.d.ts.map +1 -0
- package/dist/tools/re/auth-analyze.js +86 -0
- package/dist/tools/re/auth-analyze.js.map +1 -0
- package/dist/tools/re/index.d.ts +3 -0
- package/dist/tools/re/index.d.ts.map +1 -0
- package/dist/tools/re/index.js +11 -0
- package/dist/tools/re/index.js.map +1 -0
- package/dist/tools/re/js-beautify.d.ts +14 -0
- package/dist/tools/re/js-beautify.d.ts.map +1 -0
- package/dist/tools/re/js-beautify.js +132 -0
- package/dist/tools/re/js-beautify.js.map +1 -0
- package/dist/tools/re/js-deobfuscate.d.ts +11 -0
- package/dist/tools/re/js-deobfuscate.d.ts.map +1 -0
- package/dist/tools/re/js-deobfuscate.js +96 -0
- package/dist/tools/re/js-deobfuscate.js.map +1 -0
- package/dist/tools/session/close.d.ts +11 -0
- package/dist/tools/session/close.d.ts.map +1 -0
- package/dist/tools/session/close.js +24 -0
- package/dist/tools/session/close.js.map +1 -0
- package/dist/tools/session/index.d.ts +3 -0
- package/dist/tools/session/index.d.ts.map +1 -0
- package/dist/tools/session/index.js +9 -0
- package/dist/tools/session/index.js.map +1 -0
- package/dist/tools/session/list.d.ts +14 -0
- package/dist/tools/session/list.d.ts.map +1 -0
- package/dist/tools/session/list.js +26 -0
- package/dist/tools/session/list.js.map +1 -0
- package/dist/tools/session/open.d.ts +11 -0
- package/dist/tools/session/open.d.ts.map +1 -0
- package/dist/tools/session/open.js +25 -0
- package/dist/tools/session/open.js.map +1 -0
- package/dist/tools/stealth/fingerprint.d.ts +11 -0
- package/dist/tools/stealth/fingerprint.d.ts.map +1 -0
- package/dist/tools/stealth/fingerprint.js +72 -0
- package/dist/tools/stealth/fingerprint.js.map +1 -0
- package/dist/tools/stealth/human-behavior.d.ts +29 -0
- package/dist/tools/stealth/human-behavior.d.ts.map +1 -0
- package/dist/tools/stealth/human-behavior.js +86 -0
- package/dist/tools/stealth/human-behavior.js.map +1 -0
- package/dist/tools/stealth/index.d.ts +3 -0
- package/dist/tools/stealth/index.d.ts.map +1 -0
- package/dist/tools/stealth/index.js +7 -0
- package/dist/tools/stealth/index.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-requests.js","sourceRoot":"","sources":["../../../src/tools/network/network-requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,aAAa,GAAG,aAAa,CAAC;AAEpC,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAgB,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACrE,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC7C,IAAI,MAAM,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3F,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,OAAO,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolHandler } from '../../core/registry.js';
|
|
3
|
+
export declare const NetworkResponseArgs: z.ZodObject<{
|
|
4
|
+
index: z.ZodNumber;
|
|
5
|
+
raw: z.ZodDefault<z.ZodBoolean>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
index: number;
|
|
8
|
+
raw: boolean;
|
|
9
|
+
}, {
|
|
10
|
+
index: number;
|
|
11
|
+
raw?: boolean | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const networkResponseHandler: ToolHandler;
|
|
14
|
+
//# sourceMappingURL=network-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-response.d.ts","sourceRoot":"","sources":["../../../src/tools/network/network-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,eAAO,MAAM,sBAAsB,EAAE,WA2CpC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { errorResult, okResult } from '../../core/output.js';
|
|
3
|
+
import { ErrorCode } from '../../core/errors.js';
|
|
4
|
+
export const NetworkResponseArgs = z.object({
|
|
5
|
+
index: z.number().int().min(1),
|
|
6
|
+
raw: z.boolean().default(false),
|
|
7
|
+
});
|
|
8
|
+
export const networkResponseHandler = async (args, ctx) => {
|
|
9
|
+
const parsed = NetworkResponseArgs.safeParse(args);
|
|
10
|
+
if (!parsed.success)
|
|
11
|
+
return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
|
|
12
|
+
const { index, raw } = parsed.data;
|
|
13
|
+
try {
|
|
14
|
+
const entries = ctx.session?.getNetworkEntries?.() ?? [];
|
|
15
|
+
const richEntry = entries[index - 1];
|
|
16
|
+
if (richEntry) {
|
|
17
|
+
if (richEntry.responseBody) {
|
|
18
|
+
const text = raw
|
|
19
|
+
? richEntry.responseBody
|
|
20
|
+
: Buffer.from(richEntry.responseBody, 'base64').toString('utf-8').slice(0, 10000);
|
|
21
|
+
return okResult({
|
|
22
|
+
status: richEntry.status,
|
|
23
|
+
statusText: richEntry.statusText,
|
|
24
|
+
url: richEntry.url,
|
|
25
|
+
headers: richEntry.responseHeaders,
|
|
26
|
+
body: text,
|
|
27
|
+
cached: true,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (!richEntry.completed) {
|
|
31
|
+
return errorResult(ErrorCode.NO_RESPONSE, 'Request is still pending');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const legacyEntries = ctx.session?.getNetworkRequests?.() ?? [];
|
|
35
|
+
const legacyEntry = legacyEntries[index - 1];
|
|
36
|
+
if (!legacyEntry)
|
|
37
|
+
return errorResult(ErrorCode.REQUEST_NOT_FOUND, `Request #${index} not found`);
|
|
38
|
+
const response = await legacyEntry.request.response();
|
|
39
|
+
if (!response)
|
|
40
|
+
return errorResult(ErrorCode.NO_RESPONSE, 'No response available for this request');
|
|
41
|
+
const body = await response.body().catch(() => null);
|
|
42
|
+
const text = body ? Buffer.from(body).toString('utf-8').slice(0, 10000) : '';
|
|
43
|
+
return okResult({
|
|
44
|
+
status: response.status(),
|
|
45
|
+
statusText: response.statusText(),
|
|
46
|
+
url: response.url(),
|
|
47
|
+
headers: response.headers(),
|
|
48
|
+
body: text,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
53
|
+
return errorResult(ErrorCode.NETWORK_RESPONSE_FAILED, message);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=network-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-response.js","sourceRoot":"","sources":["../../../src/tools/network/network-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolHandler } from '../../core/registry.js';
|
|
3
|
+
import type { Page } from 'playwright';
|
|
4
|
+
export declare const WaitForNavigationArgs: z.ZodObject<{
|
|
5
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
url: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
timeout: number;
|
|
9
|
+
url?: string | undefined;
|
|
10
|
+
}, {
|
|
11
|
+
timeout?: number | undefined;
|
|
12
|
+
url?: string | undefined;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const waitForNavigationHandler: ToolHandler<Page>;
|
|
15
|
+
//# sourceMappingURL=wait-nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-nav.d.ts","sourceRoot":"","sources":["../../../src/tools/network/wait-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,IAAI,CActD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { errorResult, okResult } from '../../core/output.js';
|
|
3
|
+
import { ErrorCode } from '../../core/errors.js';
|
|
4
|
+
export const WaitForNavigationArgs = z.object({
|
|
5
|
+
timeout: z.number().int().min(100).max(120000).default(10000),
|
|
6
|
+
url: z.string().optional(),
|
|
7
|
+
});
|
|
8
|
+
export const waitForNavigationHandler = async (args, ctx) => {
|
|
9
|
+
const parsed = WaitForNavigationArgs.safeParse(args);
|
|
10
|
+
if (!parsed.success)
|
|
11
|
+
return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
|
|
12
|
+
const { timeout, url } = parsed.data;
|
|
13
|
+
try {
|
|
14
|
+
const page = await ctx.getPage();
|
|
15
|
+
const waitOptions = { timeout };
|
|
16
|
+
if (url)
|
|
17
|
+
waitOptions.url = (u) => u.includes(url);
|
|
18
|
+
await page.waitForNavigation(waitOptions);
|
|
19
|
+
return okResult({ navigated: true, url: page.url() });
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
23
|
+
return errorResult(ErrorCode.WAIT_NAVIGATION_FAILED, message);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=wait-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-nav.js","sourceRoot":"","sources":["../../../src/tools/network/wait-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAsB,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAC7E,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,WAAW,GAAQ,EAAE,OAAO,EAAE,CAAC;QACrC,IAAI,GAAG;YAAE,WAAW,CAAC,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAI,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolHandler } from '../../core/registry.js';
|
|
3
|
+
export declare const WebSocketFramesArgs: z.ZodObject<{
|
|
4
|
+
wsId: z.ZodOptional<z.ZodString>;
|
|
5
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
offset?: number | undefined;
|
|
9
|
+
limit?: number | undefined;
|
|
10
|
+
wsId?: string | undefined;
|
|
11
|
+
}, {
|
|
12
|
+
offset?: number | undefined;
|
|
13
|
+
limit?: number | undefined;
|
|
14
|
+
wsId?: string | undefined;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const websocketFramesHandler: ToolHandler;
|
|
17
|
+
//# sourceMappingURL=websocket-frames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-frames.d.ts","sourceRoot":"","sources":["../../../src/tools/network/websocket-frames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,sBAAsB,EAAE,WAYpC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { errorResult, applyPagination, paginatedOkResult } from '../../core/output.js';
|
|
3
|
+
import { ErrorCode } from '../../core/errors.js';
|
|
4
|
+
export const WebSocketFramesArgs = z.object({
|
|
5
|
+
wsId: z.string().optional(),
|
|
6
|
+
offset: z.number().int().min(0).optional(),
|
|
7
|
+
limit: z.number().int().min(1).max(500).optional(),
|
|
8
|
+
});
|
|
9
|
+
export const websocketFramesHandler = async (args, ctx) => {
|
|
10
|
+
const parsed = WebSocketFramesArgs.safeParse(args);
|
|
11
|
+
if (!parsed.success)
|
|
12
|
+
return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
|
|
13
|
+
const { wsId, offset, limit } = parsed.data;
|
|
14
|
+
try {
|
|
15
|
+
const frames = ctx.session?.getWebSocketFrames(wsId) ?? [];
|
|
16
|
+
const { items, totalCount } = applyPagination(frames, { offset, limit });
|
|
17
|
+
return paginatedOkResult(items, totalCount, offset ?? 0, limit ?? 50);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
21
|
+
return errorResult(ErrorCode.WEBSOCKET_FRAMES_FAILED, message);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=websocket-frames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-frames.js","sourceRoot":"","sources":["../../../src/tools/network/websocket-frames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAgB,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACrE,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,OAAO,iBAAiB,CAAC,KAA6C,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAChH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolHandler } from '../../core/registry.js';
|
|
3
|
+
export declare const ApiDiscoverArgs: z.ZodObject<{
|
|
4
|
+
source: z.ZodString;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
source: string;
|
|
7
|
+
}, {
|
|
8
|
+
source: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const apiDiscoverHandler: ToolHandler;
|
|
11
|
+
//# sourceMappingURL=api-discover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-discover.d.ts","sourceRoot":"","sources":["../../../src/tools/re/api-discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAuC1D,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,WAkBhC,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { errorResult, okResult } from '../../core/output.js';
|
|
3
|
+
import { ErrorCode } from '../../core/errors.js';
|
|
4
|
+
const URL_PATTERNS = [
|
|
5
|
+
/["'](https?:\/\/[^"' \t\r\n]+)["']/g,
|
|
6
|
+
/["'](\/[a-zA-Z_][\w/.%-]*(?:\/[\w.%-]+)*(?:\?[\w=&%.+-]+)?)["']/g,
|
|
7
|
+
/["'](\/api\/[\w/.-]*)["']/g,
|
|
8
|
+
/["'](\/v\d+\/[\w/.-]*)["']/g,
|
|
9
|
+
/["']([\w]+(?:\.[\w]+)+\/[\w/.-]*)["']/g,
|
|
10
|
+
/(?:fetch|axios|request|ajax|get|post|put|delete|patch)\s*\(\s*["']([^"']+)["']/g,
|
|
11
|
+
/(?:url|endpoint|path|route|baseURL)\s*[=:]\s*["']([^"']+)["']/g,
|
|
12
|
+
/["'](\/graphql)["']/g,
|
|
13
|
+
/["'](\/rest\/[\w/.-]*)["']/g,
|
|
14
|
+
/["'](\/sockjs\/[\w/.-]*)["']/g,
|
|
15
|
+
/["'](\/ws[\w/.-]*)["']/g,
|
|
16
|
+
];
|
|
17
|
+
function discoverEndpoints(input) {
|
|
18
|
+
const found = new Map();
|
|
19
|
+
for (const pattern of URL_PATTERNS) {
|
|
20
|
+
const matches = input.matchAll(pattern);
|
|
21
|
+
for (const match of matches) {
|
|
22
|
+
const url = match[1];
|
|
23
|
+
if (!url || url.length < 3)
|
|
24
|
+
continue;
|
|
25
|
+
const key = url.toLowerCase();
|
|
26
|
+
if (!found.has(key)) {
|
|
27
|
+
found.set(key, { url, context: match[0].substring(0, 60) });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return Array.from(found.values());
|
|
32
|
+
}
|
|
33
|
+
export const ApiDiscoverArgs = z.object({
|
|
34
|
+
source: z.string().min(1).describe('JavaScript source code to analyze for API endpoints'),
|
|
35
|
+
});
|
|
36
|
+
export const apiDiscoverHandler = async (args, _ctx) => {
|
|
37
|
+
const parsed = ApiDiscoverArgs.safeParse(args);
|
|
38
|
+
if (!parsed.success)
|
|
39
|
+
return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
|
|
40
|
+
const { source } = parsed.data;
|
|
41
|
+
try {
|
|
42
|
+
const endpoints = discoverEndpoints(source);
|
|
43
|
+
const fullUrls = endpoints.filter(e => e.url.startsWith('http'));
|
|
44
|
+
const relativePaths = endpoints.filter(e => !e.url.startsWith('http'));
|
|
45
|
+
return okResult({
|
|
46
|
+
totalEndpoints: endpoints.length,
|
|
47
|
+
fullUrls,
|
|
48
|
+
relativePaths,
|
|
49
|
+
endpoints: endpoints.map(e => e.url),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
54
|
+
return errorResult(ErrorCode.API_DISCOVER_FAILED, message);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=api-discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-discover.js","sourceRoot":"","sources":["../../../src/tools/re/api-discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolHandler } from '../../core/registry.js';
|
|
3
|
+
export declare const AuthAnalyzeArgs: z.ZodObject<{
|
|
4
|
+
networkLog: z.ZodString;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
networkLog: string;
|
|
7
|
+
}, {
|
|
8
|
+
networkLog: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const authAnalyzeHandler: ToolHandler;
|
|
11
|
+
//# sourceMappingURL=auth-analyze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-analyze.d.ts","sourceRoot":"","sources":["../../../src/tools/re/auth-analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AA4E1D,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,WAWhC,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { errorResult, okResult } from '../../core/output.js';
|
|
3
|
+
import { ErrorCode } from '../../core/errors.js';
|
|
4
|
+
function analyzeAuthFlow(networkLog) {
|
|
5
|
+
const indicators = [];
|
|
6
|
+
const endpoints = [];
|
|
7
|
+
const text = networkLog.toLowerCase();
|
|
8
|
+
if (text.includes('oauth') || text.includes('authorize') || text.includes('token')) {
|
|
9
|
+
indicators.push('Contains OAuth-related keywords (authorize, token)');
|
|
10
|
+
}
|
|
11
|
+
if (text.includes('/login') || text.includes('/signin') || text.includes('/sign-in')) {
|
|
12
|
+
indicators.push('Contains login endpoint');
|
|
13
|
+
}
|
|
14
|
+
if (text.includes('/auth')) {
|
|
15
|
+
indicators.push('Contains /auth endpoint');
|
|
16
|
+
}
|
|
17
|
+
if (text.includes('jwt') || text.includes('bearer')) {
|
|
18
|
+
indicators.push('JWT/Bearer token authentication detected');
|
|
19
|
+
}
|
|
20
|
+
if (text.includes('csrf') || text.includes('xsrf')) {
|
|
21
|
+
indicators.push('CSRF/XSRF token protection detected');
|
|
22
|
+
}
|
|
23
|
+
if (text.includes('session') || text.includes('cookie')) {
|
|
24
|
+
indicators.push('Session/cookie-based authentication detected');
|
|
25
|
+
}
|
|
26
|
+
if (text.includes('2fa') || text.includes('mfa') || text.includes('otp')) {
|
|
27
|
+
indicators.push('Multi-factor authentication detected');
|
|
28
|
+
}
|
|
29
|
+
if (text.includes('saml') || text.includes('sso') || text.includes('oidc')) {
|
|
30
|
+
indicators.push('SSO/SAML/OIDC authentication detected');
|
|
31
|
+
}
|
|
32
|
+
if (text.includes('recaptcha') || text.includes('captcha') || text.includes('turnstile')) {
|
|
33
|
+
indicators.push('CAPTCHA challenge detected');
|
|
34
|
+
}
|
|
35
|
+
if (text.includes('basic') && text.includes('authorization')) {
|
|
36
|
+
indicators.push('Basic HTTP authentication detected');
|
|
37
|
+
}
|
|
38
|
+
const endpointPattern = /https?:\/\/[^\s"'`]+(?:login|auth|signin|token|oauth|session|sso)[^\s"'`]*/gi;
|
|
39
|
+
let match;
|
|
40
|
+
while ((match = endpointPattern.exec(networkLog)) !== null) {
|
|
41
|
+
endpoints.push(match[0].substring(0, 120));
|
|
42
|
+
}
|
|
43
|
+
let authType = 'unknown';
|
|
44
|
+
let confidence = 'low';
|
|
45
|
+
if (indicators.length >= 3) {
|
|
46
|
+
confidence = 'high';
|
|
47
|
+
}
|
|
48
|
+
else if (indicators.length >= 1) {
|
|
49
|
+
confidence = 'medium';
|
|
50
|
+
}
|
|
51
|
+
if (text.includes('oauth') && text.includes('token')) {
|
|
52
|
+
authType = 'OAuth 2.0';
|
|
53
|
+
confidence = 'high';
|
|
54
|
+
}
|
|
55
|
+
else if (text.includes('saml') || text.includes('sso')) {
|
|
56
|
+
authType = 'SSO/SAML';
|
|
57
|
+
}
|
|
58
|
+
else if (text.includes('jwt') || text.includes('bearer')) {
|
|
59
|
+
authType = 'JWT/Bearer Token';
|
|
60
|
+
}
|
|
61
|
+
else if (text.includes('basic') && text.includes('authorization')) {
|
|
62
|
+
authType = 'HTTP Basic Auth';
|
|
63
|
+
}
|
|
64
|
+
else if (text.includes('session') && (text.includes('login') || text.includes('cookie'))) {
|
|
65
|
+
authType = 'Session Cookie';
|
|
66
|
+
}
|
|
67
|
+
return { authType, confidence, indicators, endpoints };
|
|
68
|
+
}
|
|
69
|
+
export const AuthAnalyzeArgs = z.object({
|
|
70
|
+
networkLog: z.string().min(1).describe('Network request/response log text to analyze'),
|
|
71
|
+
});
|
|
72
|
+
export const authAnalyzeHandler = async (args, _ctx) => {
|
|
73
|
+
const parsed = AuthAnalyzeArgs.safeParse(args);
|
|
74
|
+
if (!parsed.success)
|
|
75
|
+
return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
|
|
76
|
+
const { networkLog } = parsed.data;
|
|
77
|
+
try {
|
|
78
|
+
const result = analyzeAuthFlow(networkLog);
|
|
79
|
+
return okResult(result);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
83
|
+
return errorResult(ErrorCode.AUTH_ANALYZE_FAILED, message);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=auth-analyze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-analyze.js","sourceRoot":"","sources":["../../../src/tools/re/auth-analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUjD,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnF,UAAU,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrF,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,UAAU,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,UAAU,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,UAAU,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,UAAU,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,UAAU,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACzF,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7D,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,eAAe,GAAG,8EAA8E,CAAC;IACvG,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,QAAQ,GAAG,SAAS,CAAC;IACzB,IAAI,UAAU,GAA8B,KAAK,CAAC;IAElD,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3B,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAClC,UAAU,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,QAAQ,GAAG,WAAW,CAAC;QACvB,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,QAAQ,GAAG,UAAU,CAAC;IACxB,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,QAAQ,GAAG,kBAAkB,CAAC;IAChC,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACpE,QAAQ,GAAG,iBAAiB,CAAC;IAC/B,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC3F,QAAQ,GAAG,gBAAgB,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;CACvF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAgB,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAClE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/re/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAiB5D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsBeautifyHandler, JsBeautifyArgs } from './js-beautify.js';
|
|
2
|
+
import { jsDeobfuscateHandler, JsDeobfuscateArgs } from './js-deobfuscate.js';
|
|
3
|
+
import { apiDiscoverHandler, ApiDiscoverArgs } from './api-discover.js';
|
|
4
|
+
import { authAnalyzeHandler, AuthAnalyzeArgs } from './auth-analyze.js';
|
|
5
|
+
export function registerRETools(registry) {
|
|
6
|
+
registry.register({ name: 'browser_js_beautify', description: 'Beautify and format JavaScript code', category: 're', needsBrowser: false, schema: JsBeautifyArgs }, jsBeautifyHandler);
|
|
7
|
+
registry.register({ name: 'browser_js_deobfuscate', description: 'Deobfuscate JavaScript code (hex, unicode, base64)', category: 're', needsBrowser: false, schema: JsDeobfuscateArgs }, jsDeobfuscateHandler);
|
|
8
|
+
registry.register({ name: 'browser_api_discover', description: 'Discover API endpoints in JavaScript source code', category: 're', needsBrowser: false, schema: ApiDiscoverArgs }, apiDiscoverHandler);
|
|
9
|
+
registry.register({ name: 'browser_auth_analyze', description: 'Analyze network logs to detect authentication flow', category: 're', needsBrowser: false, schema: AuthAnalyzeArgs }, authAnalyzeHandler);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/re/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,UAAU,eAAe,CAAC,QAAsB;IACpD,QAAQ,CAAC,QAAQ,CACf,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,EAChJ,iBAAiB,CAClB,CAAC;IACF,QAAQ,CAAC,QAAQ,CACf,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,oDAAoD,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,EACrK,oBAAoB,CACrB,CAAC;IACF,QAAQ,CAAC,QAAQ,CACf,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,kDAAkD,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,EAC/J,kBAAkB,CACnB,CAAC;IACF,QAAQ,CAAC,QAAQ,CACf,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,oDAAoD,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,EACjK,kBAAkB,CACnB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolHandler } from '../../core/registry.js';
|
|
3
|
+
export declare const JsBeautifyArgs: z.ZodObject<{
|
|
4
|
+
code: z.ZodString;
|
|
5
|
+
indentSize: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
code: string;
|
|
8
|
+
indentSize: number;
|
|
9
|
+
}, {
|
|
10
|
+
code: string;
|
|
11
|
+
indentSize?: number | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const jsBeautifyHandler: ToolHandler;
|
|
14
|
+
//# sourceMappingURL=js-beautify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-beautify.d.ts","sourceRoot":"","sources":["../../../src/tools/re/js-beautify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAoH1D,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,WAgB/B,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { errorResult, okResult } from '../../core/output.js';
|
|
3
|
+
import { ErrorCode } from '../../core/errors.js';
|
|
4
|
+
import { sanitizeInput } from '../../core/sandbox.js';
|
|
5
|
+
function beautifyJS(code, indentSize) {
|
|
6
|
+
const indent = ' '.repeat(indentSize);
|
|
7
|
+
let result = '';
|
|
8
|
+
let depth = 0;
|
|
9
|
+
let inTemplate = 0;
|
|
10
|
+
let i = 0;
|
|
11
|
+
const emit = (s) => { result += s; };
|
|
12
|
+
const addIndent = () => { emit(indent.repeat(depth)); };
|
|
13
|
+
while (i < code.length) {
|
|
14
|
+
const ch = code[i];
|
|
15
|
+
const next = code[i + 1] ?? '';
|
|
16
|
+
if (ch === '`' && code[i - 1] !== '\\') {
|
|
17
|
+
inTemplate ^= 1;
|
|
18
|
+
emit(ch);
|
|
19
|
+
i++;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (inTemplate) {
|
|
23
|
+
emit(ch);
|
|
24
|
+
i++;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (ch === '/' && next === '/') {
|
|
28
|
+
addIndent();
|
|
29
|
+
while (i < code.length && code[i] !== '\n') {
|
|
30
|
+
emit(code[i]);
|
|
31
|
+
i++;
|
|
32
|
+
}
|
|
33
|
+
emit('\n');
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (ch === '/' && next === '*') {
|
|
37
|
+
addIndent();
|
|
38
|
+
emit('/*');
|
|
39
|
+
i += 2;
|
|
40
|
+
while (i < code.length && !(code[i] === '*' && code[i + 1] === '/')) {
|
|
41
|
+
if (code[i] === '\n') {
|
|
42
|
+
emit('\n');
|
|
43
|
+
addIndent();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
emit(code[i]);
|
|
47
|
+
}
|
|
48
|
+
i++;
|
|
49
|
+
}
|
|
50
|
+
emit('*/');
|
|
51
|
+
i += 2;
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (ch === '\'' || ch === '"') {
|
|
55
|
+
const quote = ch;
|
|
56
|
+
emit(ch);
|
|
57
|
+
i++;
|
|
58
|
+
while (i < code.length && (code[i] !== quote || code[i - 1] === '\\')) {
|
|
59
|
+
emit(code[i]);
|
|
60
|
+
i++;
|
|
61
|
+
}
|
|
62
|
+
emit(code[i] ?? '');
|
|
63
|
+
i++;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (ch === '{') {
|
|
67
|
+
emit(' {\n');
|
|
68
|
+
depth++;
|
|
69
|
+
addIndent();
|
|
70
|
+
i++;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (ch === '}') {
|
|
74
|
+
depth = Math.max(0, depth - 1);
|
|
75
|
+
emit('\n');
|
|
76
|
+
addIndent();
|
|
77
|
+
emit('}');
|
|
78
|
+
i++;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (ch === ';') {
|
|
82
|
+
emit(';\n');
|
|
83
|
+
addIndent();
|
|
84
|
+
i++;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (ch === ',' && !inTemplate) {
|
|
88
|
+
emit(',\n');
|
|
89
|
+
addIndent();
|
|
90
|
+
i++;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (ch === '\n') {
|
|
94
|
+
const trimmed = result.trimEnd();
|
|
95
|
+
result = trimmed + '\n';
|
|
96
|
+
addIndent();
|
|
97
|
+
i++;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (ch === ' ' && next === ' ') {
|
|
101
|
+
i++;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
emit(ch);
|
|
105
|
+
i++;
|
|
106
|
+
}
|
|
107
|
+
return result.trimEnd();
|
|
108
|
+
}
|
|
109
|
+
export const JsBeautifyArgs = z.object({
|
|
110
|
+
code: z.string().min(1).describe('JavaScript code to beautify'),
|
|
111
|
+
indentSize: z.number().min(1).max(8).default(2).describe('Number of spaces per indent level'),
|
|
112
|
+
});
|
|
113
|
+
export const jsBeautifyHandler = async (args, _ctx) => {
|
|
114
|
+
const parsed = JsBeautifyArgs.safeParse(args);
|
|
115
|
+
if (!parsed.success)
|
|
116
|
+
return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
|
|
117
|
+
const { code, indentSize } = parsed.data;
|
|
118
|
+
const { sanitized: safeCode } = sanitizeInput(code);
|
|
119
|
+
try {
|
|
120
|
+
const beautified = beautifyJS(safeCode, indentSize);
|
|
121
|
+
return okResult({
|
|
122
|
+
originalLength: safeCode.length,
|
|
123
|
+
beautifiedLength: beautified.length,
|
|
124
|
+
code: beautified,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
129
|
+
return errorResult(ErrorCode.BEAUTIFY_FAILED, message);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
//# sourceMappingURL=js-beautify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-beautify.js","sourceRoot":"","sources":["../../../src/tools/re/js-beautify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolHandler } from '../../core/registry.js';
|
|
3
|
+
export declare const JsDeobfuscateArgs: z.ZodObject<{
|
|
4
|
+
code: z.ZodString;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
code: string;
|
|
7
|
+
}, {
|
|
8
|
+
code: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const jsDeobfuscateHandler: ToolHandler;
|
|
11
|
+
//# sourceMappingURL=js-deobfuscate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-deobfuscate.d.ts","sourceRoot":"","sources":["../../../src/tools/re/js-deobfuscate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAwF1D,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAC;AAEH,eAAO,MAAM,oBAAoB,EAAE,WAkBlC,CAAC"}
|