@keystrokehq/serpdog 0.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/README.md +17 -0
- package/dist/action.cjs +21 -0
- package/dist/action.cjs.map +1 -0
- package/dist/action.mjs +21 -0
- package/dist/action.mjs.map +1 -0
- package/dist/actions/index.cjs +3 -0
- package/dist/actions/index.d.cts +2 -0
- package/dist/actions/index.d.mts +2 -0
- package/dist/actions/index.mjs +2 -0
- package/dist/actions/screenshot-api.cjs +33 -0
- package/dist/actions/screenshot-api.cjs.map +1 -0
- package/dist/actions/screenshot-api.d.cts +9 -0
- package/dist/actions/screenshot-api.d.cts.map +1 -0
- package/dist/actions/screenshot-api.d.mts +9 -0
- package/dist/actions/screenshot-api.d.mts.map +1 -0
- package/dist/actions/screenshot-api.mjs +30 -0
- package/dist/actions/screenshot-api.mjs.map +1 -0
- package/dist/app.cjs +9 -0
- package/dist/app.cjs.map +1 -0
- package/dist/app.d.cts +5 -0
- package/dist/app.d.cts.map +1 -0
- package/dist/app.d.mts +5 -0
- package/dist/app.d.mts.map +1 -0
- package/dist/app.mjs +10 -0
- package/dist/app.mjs.map +1 -0
- package/dist/catalog.cjs +15 -0
- package/dist/catalog.cjs.map +1 -0
- package/dist/catalog.d.cts +14 -0
- package/dist/catalog.d.cts.map +1 -0
- package/dist/catalog.d.mts +14 -0
- package/dist/catalog.d.mts.map +1 -0
- package/dist/catalog.mjs +15 -0
- package/dist/catalog.mjs.map +1 -0
- package/dist/execute.cjs +18 -0
- package/dist/execute.cjs.map +1 -0
- package/dist/execute.mjs +18 -0
- package/dist/execute.mjs.map +1 -0
- package/dist/index.cjs +8 -0
- package/dist/index.d.cts +4 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.mjs +5 -0
- package/package.json +49 -0
package/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# @keystrokehq/serpdog
|
|
2
|
+
|
|
3
|
+
Keystroke-managed integration.
|
|
4
|
+
|
|
5
|
+
**App:** `serpdog`
|
|
6
|
+
**Version:** `20260615_00`
|
|
7
|
+
**Actions:** 1
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { defineAgent } from "@keystrokehq/keystroke/agent";
|
|
11
|
+
import { serpdogScreenshotApi } from "@keystrokehq/serpdog/actions";
|
|
12
|
+
|
|
13
|
+
export default defineAgent({
|
|
14
|
+
key: "serpdog-agent",
|
|
15
|
+
tools: [serpdogScreenshotApi],
|
|
16
|
+
});
|
|
17
|
+
```
|
package/dist/action.cjs
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const require_app = require("./app.cjs");
|
|
2
|
+
const require_execute = require("./execute.cjs");
|
|
3
|
+
require("zod");
|
|
4
|
+
//#region src/action.ts
|
|
5
|
+
/** Bind one gateway tool to a typed app action; the call's output is parsed against `def.output`. */
|
|
6
|
+
function action(tool, def) {
|
|
7
|
+
return require_app.serpdog.action({
|
|
8
|
+
slug: def.slug,
|
|
9
|
+
name: def.name,
|
|
10
|
+
description: def.description,
|
|
11
|
+
input: def.input,
|
|
12
|
+
output: def.output,
|
|
13
|
+
async run(input) {
|
|
14
|
+
return def.output.parse(await require_execute.executeSerpdogTool(tool, input));
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
exports.action = action;
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=action.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.cjs","names":["serpdog","executeSerpdogTool"],"sources":["../src/action.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { serpdog } from \"./app\";\nimport { executeSerpdogTool } from \"./execute\";\n\n/** Bind one gateway tool to a typed app action; the call's output is parsed against `def.output`. */\nexport function action(\n tool: string,\n def: {\n slug: string;\n name: string;\n description: string;\n input: z.ZodTypeAny;\n output: z.ZodTypeAny;\n },\n) {\n return serpdog.action({\n slug: def.slug,\n name: def.name,\n description: def.description,\n input: def.input,\n output: def.output,\n async run(input) {\n return def.output.parse(await executeSerpdogTool(tool, input as Record<string, unknown>));\n },\n });\n}\n"],"mappings":";;;;;AAMA,SAAgB,OACd,MACA,KAOA;CACA,OAAOA,YAAAA,QAAQ,OAAO;EACpB,MAAM,IAAI;EACV,MAAM,IAAI;EACV,aAAa,IAAI;EACjB,OAAO,IAAI;EACX,QAAQ,IAAI;EACZ,MAAM,IAAI,OAAO;GACf,OAAO,IAAI,OAAO,MAAM,MAAMC,gBAAAA,mBAAmB,MAAM,KAAgC,CAAC;EAC1F;CACF,CAAC;AACH"}
|
package/dist/action.mjs
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { serpdog } from "./app.mjs";
|
|
2
|
+
import { executeSerpdogTool } from "./execute.mjs";
|
|
3
|
+
import "zod";
|
|
4
|
+
//#region src/action.ts
|
|
5
|
+
/** Bind one gateway tool to a typed app action; the call's output is parsed against `def.output`. */
|
|
6
|
+
function action(tool, def) {
|
|
7
|
+
return serpdog.action({
|
|
8
|
+
slug: def.slug,
|
|
9
|
+
name: def.name,
|
|
10
|
+
description: def.description,
|
|
11
|
+
input: def.input,
|
|
12
|
+
output: def.output,
|
|
13
|
+
async run(input) {
|
|
14
|
+
return def.output.parse(await executeSerpdogTool(tool, input));
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { action };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=action.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.mjs","names":[],"sources":["../src/action.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { serpdog } from \"./app\";\nimport { executeSerpdogTool } from \"./execute\";\n\n/** Bind one gateway tool to a typed app action; the call's output is parsed against `def.output`. */\nexport function action(\n tool: string,\n def: {\n slug: string;\n name: string;\n description: string;\n input: z.ZodTypeAny;\n output: z.ZodTypeAny;\n },\n) {\n return serpdog.action({\n slug: def.slug,\n name: def.name,\n description: def.description,\n input: def.input,\n output: def.output,\n async run(input) {\n return def.output.parse(await executeSerpdogTool(tool, input as Record<string, unknown>));\n },\n });\n}\n"],"mappings":";;;;;AAMA,SAAgB,OACd,MACA,KAOA;CACA,OAAO,QAAQ,OAAO;EACpB,MAAM,IAAI;EACV,MAAM,IAAI;EACV,aAAa,IAAI;EACjB,OAAO,IAAI;EACX,QAAQ,IAAI;EACZ,MAAM,IAAI,OAAO;GACf,OAAO,IAAI,OAAO,MAAM,MAAM,mBAAmB,MAAM,KAAgC,CAAC;EAC1F;CACF,CAAC;AACH"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const require_action = require("../action.cjs");
|
|
2
|
+
let zod = require("zod");
|
|
3
|
+
//#region src/actions/screenshot-api.ts
|
|
4
|
+
const SerpdogScreenshotApiInput = zod.z.object({
|
|
5
|
+
url: zod.z.string().describe("Fully-qualified URL of the page to capture."),
|
|
6
|
+
delay: zod.z.number().int().describe("Seconds to wait before capturing the screenshot (optional).").optional(),
|
|
7
|
+
device: zod.z.enum([
|
|
8
|
+
"desktop",
|
|
9
|
+
"tablet",
|
|
10
|
+
"mobile"
|
|
11
|
+
]).describe("Device emulation: 'desktop', 'tablet', or 'mobile'.").optional(),
|
|
12
|
+
output: zod.z.enum(["json", "image"]).default("image").describe("Response format: 'json' returns base64-encoded PNG in JSON; 'image' returns raw PNG bytes.").optional(),
|
|
13
|
+
dark_mode: zod.z.boolean().default(false).describe("Capture in dark mode if supported (default: false).").optional(),
|
|
14
|
+
full_page: zod.z.boolean().default(false).describe("Capture the entire scrollable page (default: false).").optional(),
|
|
15
|
+
window_width: zod.z.number().int().describe("Viewport width in pixels (optional).").optional(),
|
|
16
|
+
window_height: zod.z.number().int().describe("Viewport height in pixels (optional).").optional(),
|
|
17
|
+
no_cookie_banners: zod.z.boolean().default(false).describe("Hide cookie banners if possible (default: false).").optional()
|
|
18
|
+
}).describe("Parameters for taking a webpage screenshot via SerpDog.");
|
|
19
|
+
const SerpdogScreenshotApiOutput = zod.z.object({
|
|
20
|
+
raw: zod.z.string().describe("Raw PNG image bytes when output='image'.").nullable().optional(),
|
|
21
|
+
image: zod.z.string().describe("Base64-encoded PNG image when output='json'.").nullable().optional()
|
|
22
|
+
}).describe("Response schema for SerpDog Screenshot API.");
|
|
23
|
+
const serpdogScreenshotApi = require_action.action("SERPDOG_SCREENSHOT_API", {
|
|
24
|
+
slug: "serpdog-screenshot-api",
|
|
25
|
+
name: "Screenshot API",
|
|
26
|
+
description: "Tool to capture a screenshot of a webpage. Use when you need a visual snapshot of a page; supports full-page, device emulation, delays, and dark mode.",
|
|
27
|
+
input: SerpdogScreenshotApiInput,
|
|
28
|
+
output: SerpdogScreenshotApiOutput
|
|
29
|
+
});
|
|
30
|
+
//#endregion
|
|
31
|
+
exports.serpdogScreenshotApi = serpdogScreenshotApi;
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=screenshot-api.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot-api.cjs","names":["z","action"],"sources":["../../src/actions/screenshot-api.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const SerpdogScreenshotApiInput: z.ZodTypeAny = z.object({\n url: z.string().describe(\"Fully-qualified URL of the page to capture.\"),\n delay: z.number().int().describe(\"Seconds to wait before capturing the screenshot (optional).\").optional(),\n device: z.enum([\"desktop\", \"tablet\", \"mobile\"]).describe(\"Device emulation: 'desktop', 'tablet', or 'mobile'.\").optional(),\n output: z.enum([\"json\", \"image\"]).default(\"image\").describe(\"Response format: 'json' returns base64-encoded PNG in JSON; 'image' returns raw PNG bytes.\").optional(),\n dark_mode: z.boolean().default(false).describe(\"Capture in dark mode if supported (default: false).\").optional(),\n full_page: z.boolean().default(false).describe(\"Capture the entire scrollable page (default: false).\").optional(),\n window_width: z.number().int().describe(\"Viewport width in pixels (optional).\").optional(),\n window_height: z.number().int().describe(\"Viewport height in pixels (optional).\").optional(),\n no_cookie_banners: z.boolean().default(false).describe(\"Hide cookie banners if possible (default: false).\").optional(),\n}).describe(\"Parameters for taking a webpage screenshot via SerpDog.\");\nexport const SerpdogScreenshotApiOutput: z.ZodTypeAny = z.object({\n raw: z.string().describe(\"Raw PNG image bytes when output='image'.\").nullable().optional(),\n image: z.string().describe(\"Base64-encoded PNG image when output='json'.\").nullable().optional(),\n}).describe(\"Response schema for SerpDog Screenshot API.\");\n\nexport const serpdogScreenshotApi = action(\"SERPDOG_SCREENSHOT_API\", {\n slug: \"serpdog-screenshot-api\",\n name: \"Screenshot API\",\n description: \"Tool to capture a screenshot of a webpage. Use when you need a visual snapshot of a page; supports full-page, device emulation, delays, and dark mode.\",\n input: SerpdogScreenshotApiInput,\n output: SerpdogScreenshotApiOutput,\n});\n"],"mappings":";;;AAIA,MAAa,4BAA0CA,IAAAA,EAAE,OAAO;CAC9D,KAAKA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C;CACtE,OAAOA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,6DAA6D,CAAC,CAAC,SAAS;CACzG,QAAQA,IAAAA,EAAE,KAAK;EAAC;EAAW;EAAU;CAAQ,CAAC,CAAC,CAAC,SAAS,qDAAqD,CAAC,CAAC,SAAS;CACzH,QAAQA,IAAAA,EAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,SAAS,4FAA4F,CAAC,CAAC,SAAS;CACnK,WAAWA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,qDAAqD,CAAC,CAAC,SAAS;CAC/G,WAAWA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,sDAAsD,CAAC,CAAC,SAAS;CAChH,cAAcA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,sCAAsC,CAAC,CAAC,SAAS;CACzF,eAAeA,IAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,uCAAuC,CAAC,CAAC,SAAS;CAC3F,mBAAmBA,IAAAA,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,mDAAmD,CAAC,CAAC,SAAS;AACvH,CAAC,CAAC,CAAC,SAAS,yDAAyD;AACrE,MAAa,6BAA2CA,IAAAA,EAAE,OAAO;CAC/D,KAAKA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,0CAA0C,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;CACzF,OAAOA,IAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,8CAA8C,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;AACjG,CAAC,CAAC,CAAC,SAAS,6CAA6C;AAEzD,MAAa,uBAAuBC,eAAAA,OAAO,0BAA0B;CACnE,MAAM;CACN,MAAM;CACN,aAAa;CACb,OAAO;CACP,QAAQ;AACV,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/actions/screenshot-api.d.ts
|
|
4
|
+
declare const SerpdogScreenshotApiInput: z.ZodTypeAny;
|
|
5
|
+
declare const SerpdogScreenshotApiOutput: z.ZodTypeAny;
|
|
6
|
+
declare const serpdogScreenshotApi: import("@keystrokehq/action").WorkflowActionDefinition<unknown, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { serpdogScreenshotApi };
|
|
9
|
+
//# sourceMappingURL=screenshot-api.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot-api.d.cts","names":[],"sources":["../../src/actions/screenshot-api.ts"],"mappings":";;;cAIa,yBAAA,EAA2B,CAAA,CAAE,UAU4B;AAAA,cACzD,0BAAA,EAA4B,CAAA,CAAE,UAGe;AAAA,cAE7C,oBAAA,gCAAoB,wBAAA,iDAAA,mBAAA,yCAAA,UAAA,4CAAA,UAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/actions/screenshot-api.d.ts
|
|
4
|
+
declare const SerpdogScreenshotApiInput: z.ZodTypeAny;
|
|
5
|
+
declare const SerpdogScreenshotApiOutput: z.ZodTypeAny;
|
|
6
|
+
declare const serpdogScreenshotApi: import("@keystrokehq/action").WorkflowActionDefinition<unknown, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { serpdogScreenshotApi };
|
|
9
|
+
//# sourceMappingURL=screenshot-api.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot-api.d.mts","names":[],"sources":["../../src/actions/screenshot-api.ts"],"mappings":";;;cAIa,yBAAA,EAA2B,CAAA,CAAE,UAU4B;AAAA,cACzD,0BAAA,EAA4B,CAAA,CAAE,UAGe;AAAA,cAE7C,oBAAA,gCAAoB,wBAAA,iDAAA,mBAAA,yCAAA,UAAA,4CAAA,UAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { action } from "../action.mjs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const serpdogScreenshotApi = action("SERPDOG_SCREENSHOT_API", {
|
|
4
|
+
slug: "serpdog-screenshot-api",
|
|
5
|
+
name: "Screenshot API",
|
|
6
|
+
description: "Tool to capture a screenshot of a webpage. Use when you need a visual snapshot of a page; supports full-page, device emulation, delays, and dark mode.",
|
|
7
|
+
input: z.object({
|
|
8
|
+
url: z.string().describe("Fully-qualified URL of the page to capture."),
|
|
9
|
+
delay: z.number().int().describe("Seconds to wait before capturing the screenshot (optional).").optional(),
|
|
10
|
+
device: z.enum([
|
|
11
|
+
"desktop",
|
|
12
|
+
"tablet",
|
|
13
|
+
"mobile"
|
|
14
|
+
]).describe("Device emulation: 'desktop', 'tablet', or 'mobile'.").optional(),
|
|
15
|
+
output: z.enum(["json", "image"]).default("image").describe("Response format: 'json' returns base64-encoded PNG in JSON; 'image' returns raw PNG bytes.").optional(),
|
|
16
|
+
dark_mode: z.boolean().default(false).describe("Capture in dark mode if supported (default: false).").optional(),
|
|
17
|
+
full_page: z.boolean().default(false).describe("Capture the entire scrollable page (default: false).").optional(),
|
|
18
|
+
window_width: z.number().int().describe("Viewport width in pixels (optional).").optional(),
|
|
19
|
+
window_height: z.number().int().describe("Viewport height in pixels (optional).").optional(),
|
|
20
|
+
no_cookie_banners: z.boolean().default(false).describe("Hide cookie banners if possible (default: false).").optional()
|
|
21
|
+
}).describe("Parameters for taking a webpage screenshot via SerpDog."),
|
|
22
|
+
output: z.object({
|
|
23
|
+
raw: z.string().describe("Raw PNG image bytes when output='image'.").nullable().optional(),
|
|
24
|
+
image: z.string().describe("Base64-encoded PNG image when output='json'.").nullable().optional()
|
|
25
|
+
}).describe("Response schema for SerpDog Screenshot API.")
|
|
26
|
+
});
|
|
27
|
+
//#endregion
|
|
28
|
+
export { serpdogScreenshotApi };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=screenshot-api.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot-api.mjs","names":[],"sources":["../../src/actions/screenshot-api.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const SerpdogScreenshotApiInput: z.ZodTypeAny = z.object({\n url: z.string().describe(\"Fully-qualified URL of the page to capture.\"),\n delay: z.number().int().describe(\"Seconds to wait before capturing the screenshot (optional).\").optional(),\n device: z.enum([\"desktop\", \"tablet\", \"mobile\"]).describe(\"Device emulation: 'desktop', 'tablet', or 'mobile'.\").optional(),\n output: z.enum([\"json\", \"image\"]).default(\"image\").describe(\"Response format: 'json' returns base64-encoded PNG in JSON; 'image' returns raw PNG bytes.\").optional(),\n dark_mode: z.boolean().default(false).describe(\"Capture in dark mode if supported (default: false).\").optional(),\n full_page: z.boolean().default(false).describe(\"Capture the entire scrollable page (default: false).\").optional(),\n window_width: z.number().int().describe(\"Viewport width in pixels (optional).\").optional(),\n window_height: z.number().int().describe(\"Viewport height in pixels (optional).\").optional(),\n no_cookie_banners: z.boolean().default(false).describe(\"Hide cookie banners if possible (default: false).\").optional(),\n}).describe(\"Parameters for taking a webpage screenshot via SerpDog.\");\nexport const SerpdogScreenshotApiOutput: z.ZodTypeAny = z.object({\n raw: z.string().describe(\"Raw PNG image bytes when output='image'.\").nullable().optional(),\n image: z.string().describe(\"Base64-encoded PNG image when output='json'.\").nullable().optional(),\n}).describe(\"Response schema for SerpDog Screenshot API.\");\n\nexport const serpdogScreenshotApi = action(\"SERPDOG_SCREENSHOT_API\", {\n slug: \"serpdog-screenshot-api\",\n name: \"Screenshot API\",\n description: \"Tool to capture a screenshot of a webpage. Use when you need a visual snapshot of a page; supports full-page, device emulation, delays, and dark mode.\",\n input: SerpdogScreenshotApiInput,\n output: SerpdogScreenshotApiOutput,\n});\n"],"mappings":";;AAoBA,MAAa,uBAAuB,OAAO,0BAA0B;CACnE,MAAM;CACN,MAAM;CACN,aAAa;CACb,OApBqD,EAAE,OAAO;EAC9D,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,6CAA6C;EACtE,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,6DAA6D,CAAC,CAAC,SAAS;EACzG,QAAQ,EAAE,KAAK;GAAC;GAAW;GAAU;EAAQ,CAAC,CAAC,CAAC,SAAS,qDAAqD,CAAC,CAAC,SAAS;EACzH,QAAQ,EAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,SAAS,4FAA4F,CAAC,CAAC,SAAS;EACnK,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,qDAAqD,CAAC,CAAC,SAAS;EAC/G,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,sDAAsD,CAAC,CAAC,SAAS;EAChH,cAAc,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,sCAAsC,CAAC,CAAC,SAAS;EACzF,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,uCAAuC,CAAC,CAAC,SAAS;EAC3F,mBAAmB,EAAE,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,SAAS,mDAAmD,CAAC,CAAC,SAAS;CACvH,CAAC,CAAC,CAAC,SAAS,yDAUH;CACP,QAVsD,EAAE,OAAO;EAC/D,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,0CAA0C,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;EACzF,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS,8CAA8C,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS;CACjG,CAAC,CAAC,CAAC,SAAS,6CAOF;AACV,CAAC"}
|
package/dist/app.cjs
ADDED
package/dist/app.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.cjs","names":[],"sources":["../src/app.ts"],"sourcesContent":["import { defineApp } from \"@keystrokehq/keystroke/app\";\n\nexport const serpdog = defineApp({\n slug: \"serpdog\",\n auth: \"keystroke\",\n});\n"],"mappings":";AAEA,MAAa,WAAA,uCAAA,CAAA,CAAA,UAAA,CAAoB;CAC/B,MAAM;CACN,MAAM;AACR,CAAC"}
|
package/dist/app.d.cts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.cts","names":[],"sources":["../src/app.ts"],"mappings":";cAEa,OAAA,6BAAO,GAAA,+BAAA,UAAA"}
|
package/dist/app.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.mts","names":[],"sources":["../src/app.ts"],"mappings":";cAEa,OAAA,6BAAO,GAAA,+BAAA,UAAA"}
|
package/dist/app.mjs
ADDED
package/dist/app.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.mjs","names":[],"sources":["../src/app.ts"],"sourcesContent":["import { defineApp } from \"@keystrokehq/keystroke/app\";\n\nexport const serpdog = defineApp({\n slug: \"serpdog\",\n auth: \"keystroke\",\n});\n"],"mappings":";;AAEA,MAAa,UAAU,UAAU;CAC/B,MAAM;CACN,MAAM;AACR,CAAC"}
|
package/dist/catalog.cjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/catalog.ts
|
|
2
|
+
/** Generated — kept in sync with src/app.ts. */
|
|
3
|
+
const serpdogCatalog = {
|
|
4
|
+
"slug": "serpdog",
|
|
5
|
+
"name": "Serpdog",
|
|
6
|
+
"description": "Serpdog provides APIs for scraping Google search results and related services, enabling developers to access real-time data from Google Search, Maps, Scholar, and more. Note: Serpdog has merged with Scrapingdog but continues to operate independently at api.serpdog.io.",
|
|
7
|
+
"category": "AI Web Scraping",
|
|
8
|
+
"logo": "https://logos.composio.dev/api/serpdog",
|
|
9
|
+
"authKind": "keystroke",
|
|
10
|
+
"oauthScopes": []
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
exports.serpdogCatalog = serpdogCatalog;
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=catalog.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.cjs","names":[],"sources":["../src/catalog.ts"],"sourcesContent":["/** Generated — kept in sync with src/app.ts. */\nexport const serpdogCatalog = {\n \"slug\": \"serpdog\",\n \"name\": \"Serpdog\",\n \"description\": \"Serpdog provides APIs for scraping Google search results and related services, enabling developers to access real-time data from Google Search, Maps, Scholar, and more. Note: Serpdog has merged with Scrapingdog but continues to operate independently at api.serpdog.io.\",\n \"category\": \"AI Web Scraping\",\n \"logo\": \"https://logos.composio.dev/api/serpdog\",\n \"authKind\": \"keystroke\",\n \"oauthScopes\": []\n} as const;\n"],"mappings":";;AACA,MAAa,iBAAiB;CAC5B,QAAQ;CACR,QAAQ;CACR,eAAe;CACf,YAAY;CACZ,QAAQ;CACR,YAAY;CACZ,eAAe,CAAC;AAClB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/catalog.d.ts
|
|
2
|
+
/** Generated — kept in sync with src/app.ts. */
|
|
3
|
+
declare const serpdogCatalog: {
|
|
4
|
+
readonly slug: "serpdog";
|
|
5
|
+
readonly name: "Serpdog";
|
|
6
|
+
readonly description: "Serpdog provides APIs for scraping Google search results and related services, enabling developers to access real-time data from Google Search, Maps, Scholar, and more. Note: Serpdog has merged with Scrapingdog but continues to operate independently at api.serpdog.io.";
|
|
7
|
+
readonly category: "AI Web Scraping";
|
|
8
|
+
readonly logo: "https://logos.composio.dev/api/serpdog";
|
|
9
|
+
readonly authKind: "keystroke";
|
|
10
|
+
readonly oauthScopes: readonly [];
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { serpdogCatalog };
|
|
14
|
+
//# sourceMappingURL=catalog.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.cts","names":[],"sources":["../src/catalog.ts"],"mappings":";;cACa,cAAA;EAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/catalog.d.ts
|
|
2
|
+
/** Generated — kept in sync with src/app.ts. */
|
|
3
|
+
declare const serpdogCatalog: {
|
|
4
|
+
readonly slug: "serpdog";
|
|
5
|
+
readonly name: "Serpdog";
|
|
6
|
+
readonly description: "Serpdog provides APIs for scraping Google search results and related services, enabling developers to access real-time data from Google Search, Maps, Scholar, and more. Note: Serpdog has merged with Scrapingdog but continues to operate independently at api.serpdog.io.";
|
|
7
|
+
readonly category: "AI Web Scraping";
|
|
8
|
+
readonly logo: "https://logos.composio.dev/api/serpdog";
|
|
9
|
+
readonly authKind: "keystroke";
|
|
10
|
+
readonly oauthScopes: readonly [];
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { serpdogCatalog };
|
|
14
|
+
//# sourceMappingURL=catalog.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.mts","names":[],"sources":["../src/catalog.ts"],"mappings":";;cACa,cAAA;EAAA"}
|
package/dist/catalog.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/catalog.ts
|
|
2
|
+
/** Generated — kept in sync with src/app.ts. */
|
|
3
|
+
const serpdogCatalog = {
|
|
4
|
+
"slug": "serpdog",
|
|
5
|
+
"name": "Serpdog",
|
|
6
|
+
"description": "Serpdog provides APIs for scraping Google search results and related services, enabling developers to access real-time data from Google Search, Maps, Scholar, and more. Note: Serpdog has merged with Scrapingdog but continues to operate independently at api.serpdog.io.",
|
|
7
|
+
"category": "AI Web Scraping",
|
|
8
|
+
"logo": "https://logos.composio.dev/api/serpdog",
|
|
9
|
+
"authKind": "keystroke",
|
|
10
|
+
"oauthScopes": []
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { serpdogCatalog };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=catalog.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.mjs","names":[],"sources":["../src/catalog.ts"],"sourcesContent":["/** Generated — kept in sync with src/app.ts. */\nexport const serpdogCatalog = {\n \"slug\": \"serpdog\",\n \"name\": \"Serpdog\",\n \"description\": \"Serpdog provides APIs for scraping Google search results and related services, enabling developers to access real-time data from Google Search, Maps, Scholar, and more. Note: Serpdog has merged with Scrapingdog but continues to operate independently at api.serpdog.io.\",\n \"category\": \"AI Web Scraping\",\n \"logo\": \"https://logos.composio.dev/api/serpdog\",\n \"authKind\": \"keystroke\",\n \"oauthScopes\": []\n} as const;\n"],"mappings":";;AACA,MAAa,iBAAiB;CAC5B,QAAQ;CACR,QAAQ;CACR,eAAe;CACf,YAAY;CACZ,QAAQ;CACR,YAAY;CACZ,eAAe,CAAC;AAClB"}
|
package/dist/execute.cjs
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
let _keystrokehq_keystroke_client = require("@keystrokehq/keystroke/client");
|
|
2
|
+
//#region src/execute.ts
|
|
3
|
+
const APP_SLUG = "serpdog";
|
|
4
|
+
/** Pinned app version — updated on regeneration. */
|
|
5
|
+
const APP_VERSION = "20260615_00";
|
|
6
|
+
async function executeSerpdogTool(tool, args) {
|
|
7
|
+
const { result } = await (0, _keystrokehq_keystroke_client.createKeystrokeClient)().tools.execute({
|
|
8
|
+
app: APP_SLUG,
|
|
9
|
+
tool,
|
|
10
|
+
arguments: args,
|
|
11
|
+
version: APP_VERSION
|
|
12
|
+
});
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
exports.executeSerpdogTool = executeSerpdogTool;
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=execute.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.cjs","names":[],"sources":["../src/execute.ts"],"sourcesContent":["import { createKeystrokeClient } from \"@keystrokehq/keystroke/client\";\n\nconst APP_SLUG = \"serpdog\";\n/** Pinned app version — updated on regeneration. */\nconst APP_VERSION = \"20260615_00\";\n\nexport async function executeSerpdogTool(\n tool: string,\n args: Record<string, unknown>,\n): Promise<unknown> {\n const { result } = await createKeystrokeClient().tools.execute({\n app: APP_SLUG,\n tool,\n arguments: args,\n version: APP_VERSION,\n });\n return result;\n}\n"],"mappings":";;AAEA,MAAM,WAAW;;AAEjB,MAAM,cAAc;AAEpB,eAAsB,mBACpB,MACA,MACkB;CAClB,MAAM,EAAE,WAAW,OAAA,GAAA,8BAAA,sBAAA,CAA4B,CAAC,CAAC,MAAM,QAAQ;EAC7D,KAAK;EACL;EACA,WAAW;EACX,SAAS;CACX,CAAC;CACD,OAAO;AACT"}
|
package/dist/execute.mjs
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createKeystrokeClient } from "@keystrokehq/keystroke/client";
|
|
2
|
+
//#region src/execute.ts
|
|
3
|
+
const APP_SLUG = "serpdog";
|
|
4
|
+
/** Pinned app version — updated on regeneration. */
|
|
5
|
+
const APP_VERSION = "20260615_00";
|
|
6
|
+
async function executeSerpdogTool(tool, args) {
|
|
7
|
+
const { result } = await createKeystrokeClient().tools.execute({
|
|
8
|
+
app: APP_SLUG,
|
|
9
|
+
tool,
|
|
10
|
+
arguments: args,
|
|
11
|
+
version: APP_VERSION
|
|
12
|
+
});
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { executeSerpdogTool };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=execute.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.mjs","names":[],"sources":["../src/execute.ts"],"sourcesContent":["import { createKeystrokeClient } from \"@keystrokehq/keystroke/client\";\n\nconst APP_SLUG = \"serpdog\";\n/** Pinned app version — updated on regeneration. */\nconst APP_VERSION = \"20260615_00\";\n\nexport async function executeSerpdogTool(\n tool: string,\n args: Record<string, unknown>,\n): Promise<unknown> {\n const { result } = await createKeystrokeClient().tools.execute({\n app: APP_SLUG,\n tool,\n arguments: args,\n version: APP_VERSION,\n });\n return result;\n}\n"],"mappings":";;AAEA,MAAM,WAAW;;AAEjB,MAAM,cAAc;AAEpB,eAAsB,mBACpB,MACA,MACkB;CAClB,MAAM,EAAE,WAAW,MAAM,sBAAsB,CAAC,CAAC,MAAM,QAAQ;EAC7D,KAAK;EACL;EACA,WAAW;EACX,SAAS;CACX,CAAC;CACD,OAAO;AACT"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_app = require("./app.cjs");
|
|
3
|
+
const require_catalog = require("./catalog.cjs");
|
|
4
|
+
const require_screenshot_api = require("./actions/screenshot-api.cjs");
|
|
5
|
+
require("./actions/index.cjs");
|
|
6
|
+
exports.serpdog = require_app.serpdog;
|
|
7
|
+
exports.serpdogCatalog = require_catalog.serpdogCatalog;
|
|
8
|
+
exports.serpdogScreenshotApi = require_screenshot_api.serpdogScreenshotApi;
|
package/dist/index.d.cts
ADDED
package/dist/index.d.mts
ADDED
package/dist/index.mjs
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@keystrokehq/serpdog",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public",
|
|
6
|
+
"registry": "https://registry.npmjs.org"
|
|
7
|
+
},
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/keystrokehq/keystroke.git",
|
|
11
|
+
"directory": "packages/integrations/serpdog"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
16
|
+
"sideEffects": false,
|
|
17
|
+
"type": "module",
|
|
18
|
+
"main": "./dist/index.cjs",
|
|
19
|
+
"module": "./dist/index.mjs",
|
|
20
|
+
"types": "./dist/index.d.mts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/index.d.mts",
|
|
24
|
+
"import": "./dist/index.mjs",
|
|
25
|
+
"require": "./dist/index.cjs"
|
|
26
|
+
},
|
|
27
|
+
"./actions": {
|
|
28
|
+
"types": "./dist/actions/index.d.mts",
|
|
29
|
+
"import": "./dist/actions/index.mjs",
|
|
30
|
+
"require": "./dist/actions/index.cjs"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@keystrokehq/keystroke": "^0.1.4",
|
|
35
|
+
"zod": "^4.4.3"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@keystrokehq/keystroke": "link:../../keystroke",
|
|
39
|
+
"@types/node": "^25.9.1",
|
|
40
|
+
"tsdown": "^0.22.0",
|
|
41
|
+
"typescript": "^6.0.3",
|
|
42
|
+
"zod": "^4.4.3"
|
|
43
|
+
},
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "tsdown",
|
|
46
|
+
"dev": "tsdown --watch --no-clean",
|
|
47
|
+
"typecheck": "tsc --noEmit"
|
|
48
|
+
}
|
|
49
|
+
}
|