@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.
Files changed (42) hide show
  1. package/README.md +17 -0
  2. package/dist/action.cjs +21 -0
  3. package/dist/action.cjs.map +1 -0
  4. package/dist/action.mjs +21 -0
  5. package/dist/action.mjs.map +1 -0
  6. package/dist/actions/index.cjs +3 -0
  7. package/dist/actions/index.d.cts +2 -0
  8. package/dist/actions/index.d.mts +2 -0
  9. package/dist/actions/index.mjs +2 -0
  10. package/dist/actions/screenshot-api.cjs +33 -0
  11. package/dist/actions/screenshot-api.cjs.map +1 -0
  12. package/dist/actions/screenshot-api.d.cts +9 -0
  13. package/dist/actions/screenshot-api.d.cts.map +1 -0
  14. package/dist/actions/screenshot-api.d.mts +9 -0
  15. package/dist/actions/screenshot-api.d.mts.map +1 -0
  16. package/dist/actions/screenshot-api.mjs +30 -0
  17. package/dist/actions/screenshot-api.mjs.map +1 -0
  18. package/dist/app.cjs +9 -0
  19. package/dist/app.cjs.map +1 -0
  20. package/dist/app.d.cts +5 -0
  21. package/dist/app.d.cts.map +1 -0
  22. package/dist/app.d.mts +5 -0
  23. package/dist/app.d.mts.map +1 -0
  24. package/dist/app.mjs +10 -0
  25. package/dist/app.mjs.map +1 -0
  26. package/dist/catalog.cjs +15 -0
  27. package/dist/catalog.cjs.map +1 -0
  28. package/dist/catalog.d.cts +14 -0
  29. package/dist/catalog.d.cts.map +1 -0
  30. package/dist/catalog.d.mts +14 -0
  31. package/dist/catalog.d.mts.map +1 -0
  32. package/dist/catalog.mjs +15 -0
  33. package/dist/catalog.mjs.map +1 -0
  34. package/dist/execute.cjs +18 -0
  35. package/dist/execute.cjs.map +1 -0
  36. package/dist/execute.mjs +18 -0
  37. package/dist/execute.mjs.map +1 -0
  38. package/dist/index.cjs +8 -0
  39. package/dist/index.d.cts +4 -0
  40. package/dist/index.d.mts +4 -0
  41. package/dist/index.mjs +5 -0
  42. 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
+ ```
@@ -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"}
@@ -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,3 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_screenshot_api = require("./screenshot-api.cjs");
3
+ exports.serpdogScreenshotApi = require_screenshot_api.serpdogScreenshotApi;
@@ -0,0 +1,2 @@
1
+ import { serpdogScreenshotApi } from "./screenshot-api.cjs";
2
+ export { serpdogScreenshotApi };
@@ -0,0 +1,2 @@
1
+ import { serpdogScreenshotApi } from "./screenshot-api.mjs";
2
+ export { serpdogScreenshotApi };
@@ -0,0 +1,2 @@
1
+ import { serpdogScreenshotApi } from "./screenshot-api.mjs";
2
+ export { serpdogScreenshotApi };
@@ -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
@@ -0,0 +1,9 @@
1
+ //#region src/app.ts
2
+ const serpdog = (0, require("@keystrokehq/keystroke/app").defineApp)({
3
+ slug: "serpdog",
4
+ auth: "keystroke"
5
+ });
6
+ //#endregion
7
+ exports.serpdog = serpdog;
8
+
9
+ //# sourceMappingURL=app.cjs.map
@@ -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,5 @@
1
+ //#region src/app.d.ts
2
+ declare const serpdog: import("@keystrokehq/app").App<import("@keystrokehq/shared").Credential>;
3
+ //#endregion
4
+ export { serpdog };
5
+ //# sourceMappingURL=app.d.cts.map
@@ -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,5 @@
1
+ //#region src/app.d.ts
2
+ declare const serpdog: import("@keystrokehq/app").App<import("@keystrokehq/shared").Credential>;
3
+ //#endregion
4
+ export { serpdog };
5
+ //# sourceMappingURL=app.d.mts.map
@@ -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
@@ -0,0 +1,10 @@
1
+ import { defineApp } from "@keystrokehq/keystroke/app";
2
+ //#region src/app.ts
3
+ const serpdog = defineApp({
4
+ slug: "serpdog",
5
+ auth: "keystroke"
6
+ });
7
+ //#endregion
8
+ export { serpdog };
9
+
10
+ //# sourceMappingURL=app.mjs.map
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -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;
@@ -0,0 +1,4 @@
1
+ import { serpdogScreenshotApi } from "./actions/screenshot-api.cjs";
2
+ import { serpdog } from "./app.cjs";
3
+ import { serpdogCatalog } from "./catalog.cjs";
4
+ export { serpdog, serpdogCatalog, serpdogScreenshotApi };
@@ -0,0 +1,4 @@
1
+ import { serpdogScreenshotApi } from "./actions/screenshot-api.mjs";
2
+ import { serpdog } from "./app.mjs";
3
+ import { serpdogCatalog } from "./catalog.mjs";
4
+ export { serpdog, serpdogCatalog, serpdogScreenshotApi };
package/dist/index.mjs ADDED
@@ -0,0 +1,5 @@
1
+ import { serpdog } from "./app.mjs";
2
+ import { serpdogCatalog } from "./catalog.mjs";
3
+ import { serpdogScreenshotApi } from "./actions/screenshot-api.mjs";
4
+ import "./actions/index.mjs";
5
+ export { serpdog, serpdogCatalog, serpdogScreenshotApi };
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
+ }