@keystrokehq/saucelabs 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 (82) 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/get-api-definition.cjs +23 -0
  7. package/dist/actions/get-api-definition.cjs.map +1 -0
  8. package/dist/actions/get-api-definition.d.cts +9 -0
  9. package/dist/actions/get-api-definition.d.cts.map +1 -0
  10. package/dist/actions/get-api-definition.d.mts +9 -0
  11. package/dist/actions/get-api-definition.d.mts.map +1 -0
  12. package/dist/actions/get-api-definition.mjs +20 -0
  13. package/dist/actions/get-api-definition.mjs.map +1 -0
  14. package/dist/actions/get-api-status.cjs +20 -0
  15. package/dist/actions/get-api-status.cjs.map +1 -0
  16. package/dist/actions/get-api-status.d.cts +9 -0
  17. package/dist/actions/get-api-status.d.cts.map +1 -0
  18. package/dist/actions/get-api-status.d.mts +9 -0
  19. package/dist/actions/get-api-status.d.mts.map +1 -0
  20. package/dist/actions/get-api-status.mjs +17 -0
  21. package/dist/actions/get-api-status.mjs.map +1 -0
  22. package/dist/actions/get-appium-eol.cjs +16 -0
  23. package/dist/actions/get-appium-eol.cjs.map +1 -0
  24. package/dist/actions/get-appium-eol.d.cts +9 -0
  25. package/dist/actions/get-appium-eol.d.cts.map +1 -0
  26. package/dist/actions/get-appium-eol.d.mts +9 -0
  27. package/dist/actions/get-appium-eol.d.mts.map +1 -0
  28. package/dist/actions/get-appium-eol.mjs +13 -0
  29. package/dist/actions/get-appium-eol.mjs.map +1 -0
  30. package/dist/actions/get-platforms.cjs +33 -0
  31. package/dist/actions/get-platforms.cjs.map +1 -0
  32. package/dist/actions/get-platforms.d.cts +9 -0
  33. package/dist/actions/get-platforms.d.cts.map +1 -0
  34. package/dist/actions/get-platforms.d.mts +9 -0
  35. package/dist/actions/get-platforms.d.mts.map +1 -0
  36. package/dist/actions/get-platforms.mjs +32 -0
  37. package/dist/actions/get-platforms.mjs.map +1 -0
  38. package/dist/actions/get-tunnel-versions.cjs +30 -0
  39. package/dist/actions/get-tunnel-versions.cjs.map +1 -0
  40. package/dist/actions/get-tunnel-versions.d.cts +9 -0
  41. package/dist/actions/get-tunnel-versions.d.cts.map +1 -0
  42. package/dist/actions/get-tunnel-versions.d.mts +9 -0
  43. package/dist/actions/get-tunnel-versions.d.mts.map +1 -0
  44. package/dist/actions/get-tunnel-versions.mjs +27 -0
  45. package/dist/actions/get-tunnel-versions.mjs.map +1 -0
  46. package/dist/actions/index.cjs +13 -0
  47. package/dist/actions/index.d.cts +7 -0
  48. package/dist/actions/index.d.mts +7 -0
  49. package/dist/actions/index.mjs +7 -0
  50. package/dist/actions/list-jobs.cjs +65 -0
  51. package/dist/actions/list-jobs.cjs.map +1 -0
  52. package/dist/actions/list-jobs.d.cts +9 -0
  53. package/dist/actions/list-jobs.d.cts.map +1 -0
  54. package/dist/actions/list-jobs.d.mts +9 -0
  55. package/dist/actions/list-jobs.d.mts.map +1 -0
  56. package/dist/actions/list-jobs.mjs +64 -0
  57. package/dist/actions/list-jobs.mjs.map +1 -0
  58. package/dist/app.cjs +9 -0
  59. package/dist/app.cjs.map +1 -0
  60. package/dist/app.d.cts +5 -0
  61. package/dist/app.d.cts.map +1 -0
  62. package/dist/app.d.mts +5 -0
  63. package/dist/app.d.mts.map +1 -0
  64. package/dist/app.mjs +10 -0
  65. package/dist/app.mjs.map +1 -0
  66. package/dist/catalog.cjs +15 -0
  67. package/dist/catalog.cjs.map +1 -0
  68. package/dist/catalog.d.cts +14 -0
  69. package/dist/catalog.d.cts.map +1 -0
  70. package/dist/catalog.d.mts +14 -0
  71. package/dist/catalog.d.mts.map +1 -0
  72. package/dist/catalog.mjs +15 -0
  73. package/dist/catalog.mjs.map +1 -0
  74. package/dist/execute.cjs +18 -0
  75. package/dist/execute.cjs.map +1 -0
  76. package/dist/execute.mjs +18 -0
  77. package/dist/execute.mjs.map +1 -0
  78. package/dist/index.cjs +18 -0
  79. package/dist/index.d.cts +9 -0
  80. package/dist/index.d.mts +9 -0
  81. package/dist/index.mjs +10 -0
  82. package/package.json +49 -0
@@ -0,0 +1,7 @@
1
+ import { saucelabsGetApiDefinition } from "./get-api-definition.mjs";
2
+ import { saucelabsGetApiStatus } from "./get-api-status.mjs";
3
+ import { saucelabsGetAppiumEol } from "./get-appium-eol.mjs";
4
+ import { saucelabsGetPlatforms } from "./get-platforms.mjs";
5
+ import { saucelabsGetTunnelVersions } from "./get-tunnel-versions.mjs";
6
+ import { saucelabsListJobs } from "./list-jobs.mjs";
7
+ export { saucelabsGetApiDefinition, saucelabsGetApiStatus, saucelabsGetAppiumEol, saucelabsGetPlatforms, saucelabsGetTunnelVersions, saucelabsListJobs };
@@ -0,0 +1,7 @@
1
+ import { saucelabsGetApiDefinition } from "./get-api-definition.mjs";
2
+ import { saucelabsGetApiStatus } from "./get-api-status.mjs";
3
+ import { saucelabsGetAppiumEol } from "./get-appium-eol.mjs";
4
+ import { saucelabsGetPlatforms } from "./get-platforms.mjs";
5
+ import { saucelabsGetTunnelVersions } from "./get-tunnel-versions.mjs";
6
+ import { saucelabsListJobs } from "./list-jobs.mjs";
7
+ export { saucelabsGetApiDefinition, saucelabsGetApiStatus, saucelabsGetAppiumEol, saucelabsGetPlatforms, saucelabsGetTunnelVersions, saucelabsListJobs };
@@ -0,0 +1,65 @@
1
+ const require_action = require("../action.cjs");
2
+ let zod = require("zod");
3
+ //#region src/actions/list-jobs.ts
4
+ const SaucelabsListJobsInput = zod.z.object({
5
+ to: zod.z.number().int().describe("Receive jobs until specific timestamp").optional(),
6
+ from: zod.z.number().int().describe("Receive jobs beginning from a specific timestamp").optional(),
7
+ full: zod.z.boolean().describe("Should the return result contain everything or just the basics").optional(),
8
+ name: zod.z.string().describe("Filter by name of the job").optional(),
9
+ limit: zod.z.number().int().default(50).describe("Number of results to return (default: 50)").optional(),
10
+ owner: zod.z.string().describe("Filter by username of owner of the jobs").optional(),
11
+ username: zod.z.string().describe("SauceLabs username to fetch jobs for"),
12
+ auto_only: zod.z.boolean().default(false).describe("Only return automated jobs (default: false)").optional(),
13
+ owner_type: zod.z.string().describe("Filter by owner type for jobs").optional(),
14
+ manual_only: zod.z.boolean().default(false).describe("Only return manual jobs (default: false)").optional(),
15
+ subaccounts: zod.z.boolean().default(false).describe("Include subaccounts in list of jobs (default: false)").optional()
16
+ }).describe("Request model for listing SauceLabs jobs.");
17
+ const SaucelabsListJobs_JobSchema = zod.z.object({
18
+ id: zod.z.string().describe("Unique identifier for the job"),
19
+ os: zod.z.string().describe("Operating system used").nullable().optional(),
20
+ name: zod.z.string().describe("Name of the job").nullable().optional(),
21
+ tags: zod.z.array(zod.z.string()).describe("Tags associated with the job").nullable().optional(),
22
+ build: zod.z.string().describe("Build identifier").nullable().optional(),
23
+ owner: zod.z.string().describe("Username of the job owner").nullable().optional(),
24
+ manual: zod.z.boolean().describe("Whether this is a manual job").nullable().optional(),
25
+ passed: zod.z.boolean().describe("Whether the test passed").nullable().optional(),
26
+ public: zod.z.string().describe("Public visibility setting").nullable().optional(),
27
+ status: zod.z.string().describe("Current status of the job").nullable().optional(),
28
+ browser: zod.z.string().describe("Browser name used for the test").nullable().optional(),
29
+ log_url: zod.z.string().describe("URL to access job logs").nullable().optional(),
30
+ proxied: zod.z.boolean().describe("Whether the job was proxied").nullable().optional(),
31
+ end_time: zod.z.string().describe("Job end timestamp").nullable().optional(),
32
+ video_url: zod.z.string().describe("URL to access job video").nullable().optional(),
33
+ proxy_host: zod.z.boolean().describe("Proxy host used").nullable().optional(),
34
+ start_time: zod.z.string().describe("Job start timestamp").nullable().optional(),
35
+ base_config: zod.z.record(zod.z.string(), zod.z.unknown()).describe("Base configuration object").nullable().optional(),
36
+ "custom-data": zod.z.string().describe("Custom data associated with the job").nullable().optional(),
37
+ breakpointed: zod.z.string().describe("Breakpoint status of the job").nullable().optional(),
38
+ record_video: zod.z.boolean().describe("Whether video was recorded").nullable().optional(),
39
+ video_secret: zod.z.string().describe("Secret token for video access").nullable().optional(),
40
+ creation_time: zod.z.string().describe("Job creation timestamp").nullable().optional(),
41
+ deletion_time: zod.z.string().describe("Job deletion timestamp").nullable().optional(),
42
+ command_counts: zod.z.record(zod.z.string(), zod.z.unknown()).describe("Count of commands executed").nullable().optional(),
43
+ browser_version: zod.z.string().describe("Full browser version").nullable().optional(),
44
+ selenium_version: zod.z.string().describe("Selenium version used").nullable().optional(),
45
+ modification_time: zod.z.string().describe("Last modification timestamp").nullable().optional(),
46
+ assigned_tunnel_id: zod.z.string().describe("ID of the assigned tunnel").nullable().optional(),
47
+ automation_backend: zod.z.string().describe("Automation backend used for the job").nullable().optional(),
48
+ record_screenshots: zod.z.boolean().describe("Whether screenshots were recorded").nullable().optional(),
49
+ consolidated_status: zod.z.string().describe("Consolidated status of the job").nullable().optional(),
50
+ browser_short_version: zod.z.string().describe("Short version of the browser").nullable().optional(),
51
+ collects_automator_log: zod.z.boolean().describe("Whether automator logs are collected").nullable().optional(),
52
+ commands_not_successful: zod.z.number().int().describe("Number of unsuccessful commands").nullable().optional()
53
+ }).describe("Individual job object containing test execution details.");
54
+ const SaucelabsListJobsOutput = zod.z.object({ jobs: zod.z.array(SaucelabsListJobs_JobSchema).describe("List of jobs matching the criteria").nullable().optional() }).describe("Response model for listing SauceLabs jobs.");
55
+ const saucelabsListJobs = require_action.action("SAUCELABS_LIST_JOBS", {
56
+ slug: "saucelabs-list-jobs",
57
+ name: "List Jobs",
58
+ description: "Tool to retrieve all jobs for a SauceLabs user. Use when you need to list test execution jobs with optional filters for time range, job type, or owner.",
59
+ input: SaucelabsListJobsInput,
60
+ output: SaucelabsListJobsOutput
61
+ });
62
+ //#endregion
63
+ exports.saucelabsListJobs = saucelabsListJobs;
64
+
65
+ //# sourceMappingURL=list-jobs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-jobs.cjs","names":["z","action"],"sources":["../../src/actions/list-jobs.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const SaucelabsListJobsInput: z.ZodTypeAny = z.object({\n to: z.number().int().describe(\"Receive jobs until specific timestamp\").optional(),\n from: z.number().int().describe(\"Receive jobs beginning from a specific timestamp\").optional(),\n full: z.boolean().describe(\"Should the return result contain everything or just the basics\").optional(),\n name: z.string().describe(\"Filter by name of the job\").optional(),\n limit: z.number().int().default(50).describe(\"Number of results to return (default: 50)\").optional(),\n owner: z.string().describe(\"Filter by username of owner of the jobs\").optional(),\n username: z.string().describe(\"SauceLabs username to fetch jobs for\"),\n auto_only: z.boolean().default(false).describe(\"Only return automated jobs (default: false)\").optional(),\n owner_type: z.string().describe(\"Filter by owner type for jobs\").optional(),\n manual_only: z.boolean().default(false).describe(\"Only return manual jobs (default: false)\").optional(),\n subaccounts: z.boolean().default(false).describe(\"Include subaccounts in list of jobs (default: false)\").optional(),\n}).describe(\"Request model for listing SauceLabs jobs.\");\nconst SaucelabsListJobs_JobSchema: z.ZodTypeAny = z.object({\n id: z.string().describe(\"Unique identifier for the job\"),\n os: z.string().describe(\"Operating system used\").nullable().optional(),\n name: z.string().describe(\"Name of the job\").nullable().optional(),\n tags: z.array(z.string()).describe(\"Tags associated with the job\").nullable().optional(),\n build: z.string().describe(\"Build identifier\").nullable().optional(),\n owner: z.string().describe(\"Username of the job owner\").nullable().optional(),\n manual: z.boolean().describe(\"Whether this is a manual job\").nullable().optional(),\n passed: z.boolean().describe(\"Whether the test passed\").nullable().optional(),\n public: z.string().describe(\"Public visibility setting\").nullable().optional(),\n status: z.string().describe(\"Current status of the job\").nullable().optional(),\n browser: z.string().describe(\"Browser name used for the test\").nullable().optional(),\n log_url: z.string().describe(\"URL to access job logs\").nullable().optional(),\n proxied: z.boolean().describe(\"Whether the job was proxied\").nullable().optional(),\n end_time: z.string().describe(\"Job end timestamp\").nullable().optional(),\n video_url: z.string().describe(\"URL to access job video\").nullable().optional(),\n proxy_host: z.boolean().describe(\"Proxy host used\").nullable().optional(),\n start_time: z.string().describe(\"Job start timestamp\").nullable().optional(),\n base_config: z.record(z.string(), z.unknown()).describe(\"Base configuration object\").nullable().optional(),\n \"custom-data\": z.string().describe(\"Custom data associated with the job\").nullable().optional(),\n breakpointed: z.string().describe(\"Breakpoint status of the job\").nullable().optional(),\n record_video: z.boolean().describe(\"Whether video was recorded\").nullable().optional(),\n video_secret: z.string().describe(\"Secret token for video access\").nullable().optional(),\n creation_time: z.string().describe(\"Job creation timestamp\").nullable().optional(),\n deletion_time: z.string().describe(\"Job deletion timestamp\").nullable().optional(),\n command_counts: z.record(z.string(), z.unknown()).describe(\"Count of commands executed\").nullable().optional(),\n browser_version: z.string().describe(\"Full browser version\").nullable().optional(),\n selenium_version: z.string().describe(\"Selenium version used\").nullable().optional(),\n modification_time: z.string().describe(\"Last modification timestamp\").nullable().optional(),\n assigned_tunnel_id: z.string().describe(\"ID of the assigned tunnel\").nullable().optional(),\n automation_backend: z.string().describe(\"Automation backend used for the job\").nullable().optional(),\n record_screenshots: z.boolean().describe(\"Whether screenshots were recorded\").nullable().optional(),\n consolidated_status: z.string().describe(\"Consolidated status of the job\").nullable().optional(),\n browser_short_version: z.string().describe(\"Short version of the browser\").nullable().optional(),\n collects_automator_log: z.boolean().describe(\"Whether automator logs are collected\").nullable().optional(),\n commands_not_successful: z.number().int().describe(\"Number of unsuccessful commands\").nullable().optional(),\n}).describe(\"Individual job object containing test execution details.\");\nexport const SaucelabsListJobsOutput: z.ZodTypeAny = z.object({\n jobs: z.array(SaucelabsListJobs_JobSchema).describe(\"List of jobs matching the criteria\").nullable().optional(),\n}).describe(\"Response model for listing SauceLabs jobs.\");\n\nexport const saucelabsListJobs = action(\"SAUCELABS_LIST_JOBS\", {\n slug: \"saucelabs-list-jobs\",\n name: \"List Jobs\",\n description: \"Tool to retrieve all jobs for a SauceLabs user. Use when you need to list test execution jobs with optional filters for time range, job type, or owner.\",\n input: SaucelabsListJobsInput,\n output: SaucelabsListJobsOutput,\n});\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/actions/list-jobs.d.ts
4
+ declare const SaucelabsListJobsInput: z.ZodTypeAny;
5
+ declare const SaucelabsListJobsOutput: z.ZodTypeAny;
6
+ declare const saucelabsListJobs: import("@keystrokehq/action").WorkflowActionDefinition<unknown, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
7
+ //#endregion
8
+ export { saucelabsListJobs };
9
+ //# sourceMappingURL=list-jobs.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-jobs.d.cts","names":[],"sources":["../../src/actions/list-jobs.ts"],"mappings":";;;cAIa,sBAAA,EAAwB,CAAA,CAAE,UAYiB;AAAA,cAsC3C,uBAAA,EAAyB,CAAA,CAAE,UAEiB;AAAA,cAE5C,iBAAA,gCAAiB,wBAAA,iDAAA,mBAAA,yCAAA,UAAA,4CAAA,UAAA"}
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+
3
+ //#region src/actions/list-jobs.d.ts
4
+ declare const SaucelabsListJobsInput: z.ZodTypeAny;
5
+ declare const SaucelabsListJobsOutput: z.ZodTypeAny;
6
+ declare const saucelabsListJobs: import("@keystrokehq/action").WorkflowActionDefinition<unknown, unknown, import("@keystrokehq/shared").ResolvedCredentials<readonly [import("@keystrokehq/shared").Credential]>, readonly [import("@keystrokehq/shared").Credential]>;
7
+ //#endregion
8
+ export { saucelabsListJobs };
9
+ //# sourceMappingURL=list-jobs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-jobs.d.mts","names":[],"sources":["../../src/actions/list-jobs.ts"],"mappings":";;;cAIa,sBAAA,EAAwB,CAAA,CAAE,UAYiB;AAAA,cAsC3C,uBAAA,EAAyB,CAAA,CAAE,UAEiB;AAAA,cAE5C,iBAAA,gCAAiB,wBAAA,iDAAA,mBAAA,yCAAA,UAAA,4CAAA,UAAA"}
@@ -0,0 +1,64 @@
1
+ import { action } from "../action.mjs";
2
+ import { z } from "zod";
3
+ //#region src/actions/list-jobs.ts
4
+ const SaucelabsListJobsInput = z.object({
5
+ to: z.number().int().describe("Receive jobs until specific timestamp").optional(),
6
+ from: z.number().int().describe("Receive jobs beginning from a specific timestamp").optional(),
7
+ full: z.boolean().describe("Should the return result contain everything or just the basics").optional(),
8
+ name: z.string().describe("Filter by name of the job").optional(),
9
+ limit: z.number().int().default(50).describe("Number of results to return (default: 50)").optional(),
10
+ owner: z.string().describe("Filter by username of owner of the jobs").optional(),
11
+ username: z.string().describe("SauceLabs username to fetch jobs for"),
12
+ auto_only: z.boolean().default(false).describe("Only return automated jobs (default: false)").optional(),
13
+ owner_type: z.string().describe("Filter by owner type for jobs").optional(),
14
+ manual_only: z.boolean().default(false).describe("Only return manual jobs (default: false)").optional(),
15
+ subaccounts: z.boolean().default(false).describe("Include subaccounts in list of jobs (default: false)").optional()
16
+ }).describe("Request model for listing SauceLabs jobs.");
17
+ const SaucelabsListJobs_JobSchema = z.object({
18
+ id: z.string().describe("Unique identifier for the job"),
19
+ os: z.string().describe("Operating system used").nullable().optional(),
20
+ name: z.string().describe("Name of the job").nullable().optional(),
21
+ tags: z.array(z.string()).describe("Tags associated with the job").nullable().optional(),
22
+ build: z.string().describe("Build identifier").nullable().optional(),
23
+ owner: z.string().describe("Username of the job owner").nullable().optional(),
24
+ manual: z.boolean().describe("Whether this is a manual job").nullable().optional(),
25
+ passed: z.boolean().describe("Whether the test passed").nullable().optional(),
26
+ public: z.string().describe("Public visibility setting").nullable().optional(),
27
+ status: z.string().describe("Current status of the job").nullable().optional(),
28
+ browser: z.string().describe("Browser name used for the test").nullable().optional(),
29
+ log_url: z.string().describe("URL to access job logs").nullable().optional(),
30
+ proxied: z.boolean().describe("Whether the job was proxied").nullable().optional(),
31
+ end_time: z.string().describe("Job end timestamp").nullable().optional(),
32
+ video_url: z.string().describe("URL to access job video").nullable().optional(),
33
+ proxy_host: z.boolean().describe("Proxy host used").nullable().optional(),
34
+ start_time: z.string().describe("Job start timestamp").nullable().optional(),
35
+ base_config: z.record(z.string(), z.unknown()).describe("Base configuration object").nullable().optional(),
36
+ "custom-data": z.string().describe("Custom data associated with the job").nullable().optional(),
37
+ breakpointed: z.string().describe("Breakpoint status of the job").nullable().optional(),
38
+ record_video: z.boolean().describe("Whether video was recorded").nullable().optional(),
39
+ video_secret: z.string().describe("Secret token for video access").nullable().optional(),
40
+ creation_time: z.string().describe("Job creation timestamp").nullable().optional(),
41
+ deletion_time: z.string().describe("Job deletion timestamp").nullable().optional(),
42
+ command_counts: z.record(z.string(), z.unknown()).describe("Count of commands executed").nullable().optional(),
43
+ browser_version: z.string().describe("Full browser version").nullable().optional(),
44
+ selenium_version: z.string().describe("Selenium version used").nullable().optional(),
45
+ modification_time: z.string().describe("Last modification timestamp").nullable().optional(),
46
+ assigned_tunnel_id: z.string().describe("ID of the assigned tunnel").nullable().optional(),
47
+ automation_backend: z.string().describe("Automation backend used for the job").nullable().optional(),
48
+ record_screenshots: z.boolean().describe("Whether screenshots were recorded").nullable().optional(),
49
+ consolidated_status: z.string().describe("Consolidated status of the job").nullable().optional(),
50
+ browser_short_version: z.string().describe("Short version of the browser").nullable().optional(),
51
+ collects_automator_log: z.boolean().describe("Whether automator logs are collected").nullable().optional(),
52
+ commands_not_successful: z.number().int().describe("Number of unsuccessful commands").nullable().optional()
53
+ }).describe("Individual job object containing test execution details.");
54
+ const saucelabsListJobs = action("SAUCELABS_LIST_JOBS", {
55
+ slug: "saucelabs-list-jobs",
56
+ name: "List Jobs",
57
+ description: "Tool to retrieve all jobs for a SauceLabs user. Use when you need to list test execution jobs with optional filters for time range, job type, or owner.",
58
+ input: SaucelabsListJobsInput,
59
+ output: z.object({ jobs: z.array(SaucelabsListJobs_JobSchema).describe("List of jobs matching the criteria").nullable().optional() }).describe("Response model for listing SauceLabs jobs.")
60
+ });
61
+ //#endregion
62
+ export { saucelabsListJobs };
63
+
64
+ //# sourceMappingURL=list-jobs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-jobs.mjs","names":[],"sources":["../../src/actions/list-jobs.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { action } from \"../action\";\n\nexport const SaucelabsListJobsInput: z.ZodTypeAny = z.object({\n to: z.number().int().describe(\"Receive jobs until specific timestamp\").optional(),\n from: z.number().int().describe(\"Receive jobs beginning from a specific timestamp\").optional(),\n full: z.boolean().describe(\"Should the return result contain everything or just the basics\").optional(),\n name: z.string().describe(\"Filter by name of the job\").optional(),\n limit: z.number().int().default(50).describe(\"Number of results to return (default: 50)\").optional(),\n owner: z.string().describe(\"Filter by username of owner of the jobs\").optional(),\n username: z.string().describe(\"SauceLabs username to fetch jobs for\"),\n auto_only: z.boolean().default(false).describe(\"Only return automated jobs (default: false)\").optional(),\n owner_type: z.string().describe(\"Filter by owner type for jobs\").optional(),\n manual_only: z.boolean().default(false).describe(\"Only return manual jobs (default: false)\").optional(),\n subaccounts: z.boolean().default(false).describe(\"Include subaccounts in list of jobs (default: false)\").optional(),\n}).describe(\"Request model for listing SauceLabs jobs.\");\nconst SaucelabsListJobs_JobSchema: z.ZodTypeAny = z.object({\n id: z.string().describe(\"Unique identifier for the job\"),\n os: z.string().describe(\"Operating system used\").nullable().optional(),\n name: z.string().describe(\"Name of the job\").nullable().optional(),\n tags: z.array(z.string()).describe(\"Tags associated with the job\").nullable().optional(),\n build: z.string().describe(\"Build identifier\").nullable().optional(),\n owner: z.string().describe(\"Username of the job owner\").nullable().optional(),\n manual: z.boolean().describe(\"Whether this is a manual job\").nullable().optional(),\n passed: z.boolean().describe(\"Whether the test passed\").nullable().optional(),\n public: z.string().describe(\"Public visibility setting\").nullable().optional(),\n status: z.string().describe(\"Current status of the job\").nullable().optional(),\n browser: z.string().describe(\"Browser name used for the test\").nullable().optional(),\n log_url: z.string().describe(\"URL to access job logs\").nullable().optional(),\n proxied: z.boolean().describe(\"Whether the job was proxied\").nullable().optional(),\n end_time: z.string().describe(\"Job end timestamp\").nullable().optional(),\n video_url: z.string().describe(\"URL to access job video\").nullable().optional(),\n proxy_host: z.boolean().describe(\"Proxy host used\").nullable().optional(),\n start_time: z.string().describe(\"Job start timestamp\").nullable().optional(),\n base_config: z.record(z.string(), z.unknown()).describe(\"Base configuration object\").nullable().optional(),\n \"custom-data\": z.string().describe(\"Custom data associated with the job\").nullable().optional(),\n breakpointed: z.string().describe(\"Breakpoint status of the job\").nullable().optional(),\n record_video: z.boolean().describe(\"Whether video was recorded\").nullable().optional(),\n video_secret: z.string().describe(\"Secret token for video access\").nullable().optional(),\n creation_time: z.string().describe(\"Job creation timestamp\").nullable().optional(),\n deletion_time: z.string().describe(\"Job deletion timestamp\").nullable().optional(),\n command_counts: z.record(z.string(), z.unknown()).describe(\"Count of commands executed\").nullable().optional(),\n browser_version: z.string().describe(\"Full browser version\").nullable().optional(),\n selenium_version: z.string().describe(\"Selenium version used\").nullable().optional(),\n modification_time: z.string().describe(\"Last modification timestamp\").nullable().optional(),\n assigned_tunnel_id: z.string().describe(\"ID of the assigned tunnel\").nullable().optional(),\n automation_backend: z.string().describe(\"Automation backend used for the job\").nullable().optional(),\n record_screenshots: z.boolean().describe(\"Whether screenshots were recorded\").nullable().optional(),\n consolidated_status: z.string().describe(\"Consolidated status of the job\").nullable().optional(),\n browser_short_version: z.string().describe(\"Short version of the browser\").nullable().optional(),\n collects_automator_log: z.boolean().describe(\"Whether automator logs are collected\").nullable().optional(),\n commands_not_successful: z.number().int().describe(\"Number of unsuccessful commands\").nullable().optional(),\n}).describe(\"Individual job object containing test execution details.\");\nexport const SaucelabsListJobsOutput: z.ZodTypeAny = z.object({\n jobs: z.array(SaucelabsListJobs_JobSchema).describe(\"List of jobs matching the criteria\").nullable().optional(),\n}).describe(\"Response model for listing SauceLabs jobs.\");\n\nexport const saucelabsListJobs = action(\"SAUCELABS_LIST_JOBS\", {\n slug: \"saucelabs-list-jobs\",\n name: \"List Jobs\",\n description: \"Tool to retrieve all jobs for a SauceLabs user. Use when you need to list test execution jobs with optional filters for time range, job type, or owner.\",\n input: SaucelabsListJobsInput,\n output: SaucelabsListJobsOutput,\n});\n"],"mappings":"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"}
package/dist/app.cjs ADDED
@@ -0,0 +1,9 @@
1
+ //#region src/app.ts
2
+ const saucelabs = (0, require("@keystrokehq/keystroke/app").defineApp)({
3
+ slug: "saucelabs",
4
+ auth: "keystroke"
5
+ });
6
+ //#endregion
7
+ exports.saucelabs = saucelabs;
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 saucelabs = defineApp({\n slug: \"saucelabs\",\n auth: \"keystroke\",\n});\n"],"mappings":";AAEA,MAAa,aAAA,uCAAA,CAAA,CAAA,UAAA,CAAsB;CACjC,MAAM;CACN,MAAM;AACR,CAAC"}
package/dist/app.d.cts ADDED
@@ -0,0 +1,5 @@
1
+ //#region src/app.d.ts
2
+ declare const saucelabs: import("@keystrokehq/app").App<import("@keystrokehq/shared").Credential>;
3
+ //#endregion
4
+ export { saucelabs };
5
+ //# sourceMappingURL=app.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.cts","names":[],"sources":["../src/app.ts"],"mappings":";cAEa,SAAA,6BAAS,GAAA,+BAAA,UAAA"}
package/dist/app.d.mts ADDED
@@ -0,0 +1,5 @@
1
+ //#region src/app.d.ts
2
+ declare const saucelabs: import("@keystrokehq/app").App<import("@keystrokehq/shared").Credential>;
3
+ //#endregion
4
+ export { saucelabs };
5
+ //# sourceMappingURL=app.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.mts","names":[],"sources":["../src/app.ts"],"mappings":";cAEa,SAAA,6BAAS,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 saucelabs = defineApp({
4
+ slug: "saucelabs",
5
+ auth: "keystroke"
6
+ });
7
+ //#endregion
8
+ export { saucelabs };
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 saucelabs = defineApp({\n slug: \"saucelabs\",\n auth: \"keystroke\",\n});\n"],"mappings":";;AAEA,MAAa,YAAY,UAAU;CACjC,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 saucelabsCatalog = {
4
+ "slug": "saucelabs",
5
+ "name": "Saucelabs",
6
+ "description": "Sauce Labs provides a comprehensive continuous testing cloud for web and mobile app testing across browsers and devices.",
7
+ "category": "Developer Tools",
8
+ "logo": "https://logos.composio.dev/api/saucelabs",
9
+ "authKind": "keystroke",
10
+ "oauthScopes": []
11
+ };
12
+ //#endregion
13
+ exports.saucelabsCatalog = saucelabsCatalog;
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 saucelabsCatalog = {\n \"slug\": \"saucelabs\",\n \"name\": \"Saucelabs\",\n \"description\": \"Sauce Labs provides a comprehensive continuous testing cloud for web and mobile app testing across browsers and devices.\",\n \"category\": \"Developer Tools\",\n \"logo\": \"https://logos.composio.dev/api/saucelabs\",\n \"authKind\": \"keystroke\",\n \"oauthScopes\": []\n} as const;\n"],"mappings":";;AACA,MAAa,mBAAmB;CAC9B,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 saucelabsCatalog: {
4
+ readonly slug: "saucelabs";
5
+ readonly name: "Saucelabs";
6
+ readonly description: "Sauce Labs provides a comprehensive continuous testing cloud for web and mobile app testing across browsers and devices.";
7
+ readonly category: "Developer Tools";
8
+ readonly logo: "https://logos.composio.dev/api/saucelabs";
9
+ readonly authKind: "keystroke";
10
+ readonly oauthScopes: readonly [];
11
+ };
12
+ //#endregion
13
+ export { saucelabsCatalog };
14
+ //# sourceMappingURL=catalog.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.cts","names":[],"sources":["../src/catalog.ts"],"mappings":";;cACa,gBAAA;EAAA"}
@@ -0,0 +1,14 @@
1
+ //#region src/catalog.d.ts
2
+ /** Generated — kept in sync with src/app.ts. */
3
+ declare const saucelabsCatalog: {
4
+ readonly slug: "saucelabs";
5
+ readonly name: "Saucelabs";
6
+ readonly description: "Sauce Labs provides a comprehensive continuous testing cloud for web and mobile app testing across browsers and devices.";
7
+ readonly category: "Developer Tools";
8
+ readonly logo: "https://logos.composio.dev/api/saucelabs";
9
+ readonly authKind: "keystroke";
10
+ readonly oauthScopes: readonly [];
11
+ };
12
+ //#endregion
13
+ export { saucelabsCatalog };
14
+ //# sourceMappingURL=catalog.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.mts","names":[],"sources":["../src/catalog.ts"],"mappings":";;cACa,gBAAA;EAAA"}
@@ -0,0 +1,15 @@
1
+ //#region src/catalog.ts
2
+ /** Generated — kept in sync with src/app.ts. */
3
+ const saucelabsCatalog = {
4
+ "slug": "saucelabs",
5
+ "name": "Saucelabs",
6
+ "description": "Sauce Labs provides a comprehensive continuous testing cloud for web and mobile app testing across browsers and devices.",
7
+ "category": "Developer Tools",
8
+ "logo": "https://logos.composio.dev/api/saucelabs",
9
+ "authKind": "keystroke",
10
+ "oauthScopes": []
11
+ };
12
+ //#endregion
13
+ export { saucelabsCatalog };
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 saucelabsCatalog = {\n \"slug\": \"saucelabs\",\n \"name\": \"Saucelabs\",\n \"description\": \"Sauce Labs provides a comprehensive continuous testing cloud for web and mobile app testing across browsers and devices.\",\n \"category\": \"Developer Tools\",\n \"logo\": \"https://logos.composio.dev/api/saucelabs\",\n \"authKind\": \"keystroke\",\n \"oauthScopes\": []\n} as const;\n"],"mappings":";;AACA,MAAa,mBAAmB;CAC9B,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 = "saucelabs";
4
+ /** Pinned app version — updated on regeneration. */
5
+ const APP_VERSION = "20260615_00";
6
+ async function executeSaucelabsTool(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.executeSaucelabsTool = executeSaucelabsTool;
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 = \"saucelabs\";\n/** Pinned app version — updated on regeneration. */\nconst APP_VERSION = \"20260615_00\";\n\nexport async function executeSaucelabsTool(\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,qBACpB,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 = "saucelabs";
4
+ /** Pinned app version — updated on regeneration. */
5
+ const APP_VERSION = "20260615_00";
6
+ async function executeSaucelabsTool(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 { executeSaucelabsTool };
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 = \"saucelabs\";\n/** Pinned app version — updated on regeneration. */\nconst APP_VERSION = \"20260615_00\";\n\nexport async function executeSaucelabsTool(\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,qBACpB,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,18 @@
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_get_api_definition = require("./actions/get-api-definition.cjs");
5
+ const require_get_api_status = require("./actions/get-api-status.cjs");
6
+ const require_get_appium_eol = require("./actions/get-appium-eol.cjs");
7
+ const require_get_platforms = require("./actions/get-platforms.cjs");
8
+ const require_get_tunnel_versions = require("./actions/get-tunnel-versions.cjs");
9
+ const require_list_jobs = require("./actions/list-jobs.cjs");
10
+ require("./actions/index.cjs");
11
+ exports.saucelabs = require_app.saucelabs;
12
+ exports.saucelabsCatalog = require_catalog.saucelabsCatalog;
13
+ exports.saucelabsGetApiDefinition = require_get_api_definition.saucelabsGetApiDefinition;
14
+ exports.saucelabsGetApiStatus = require_get_api_status.saucelabsGetApiStatus;
15
+ exports.saucelabsGetAppiumEol = require_get_appium_eol.saucelabsGetAppiumEol;
16
+ exports.saucelabsGetPlatforms = require_get_platforms.saucelabsGetPlatforms;
17
+ exports.saucelabsGetTunnelVersions = require_get_tunnel_versions.saucelabsGetTunnelVersions;
18
+ exports.saucelabsListJobs = require_list_jobs.saucelabsListJobs;
@@ -0,0 +1,9 @@
1
+ import { saucelabsGetApiDefinition } from "./actions/get-api-definition.cjs";
2
+ import { saucelabsGetApiStatus } from "./actions/get-api-status.cjs";
3
+ import { saucelabsGetAppiumEol } from "./actions/get-appium-eol.cjs";
4
+ import { saucelabsGetPlatforms } from "./actions/get-platforms.cjs";
5
+ import { saucelabsGetTunnelVersions } from "./actions/get-tunnel-versions.cjs";
6
+ import { saucelabsListJobs } from "./actions/list-jobs.cjs";
7
+ import { saucelabs } from "./app.cjs";
8
+ import { saucelabsCatalog } from "./catalog.cjs";
9
+ export { saucelabs, saucelabsCatalog, saucelabsGetApiDefinition, saucelabsGetApiStatus, saucelabsGetAppiumEol, saucelabsGetPlatforms, saucelabsGetTunnelVersions, saucelabsListJobs };
@@ -0,0 +1,9 @@
1
+ import { saucelabsGetApiDefinition } from "./actions/get-api-definition.mjs";
2
+ import { saucelabsGetApiStatus } from "./actions/get-api-status.mjs";
3
+ import { saucelabsGetAppiumEol } from "./actions/get-appium-eol.mjs";
4
+ import { saucelabsGetPlatforms } from "./actions/get-platforms.mjs";
5
+ import { saucelabsGetTunnelVersions } from "./actions/get-tunnel-versions.mjs";
6
+ import { saucelabsListJobs } from "./actions/list-jobs.mjs";
7
+ import { saucelabs } from "./app.mjs";
8
+ import { saucelabsCatalog } from "./catalog.mjs";
9
+ export { saucelabs, saucelabsCatalog, saucelabsGetApiDefinition, saucelabsGetApiStatus, saucelabsGetAppiumEol, saucelabsGetPlatforms, saucelabsGetTunnelVersions, saucelabsListJobs };
package/dist/index.mjs ADDED
@@ -0,0 +1,10 @@
1
+ import { saucelabs } from "./app.mjs";
2
+ import { saucelabsCatalog } from "./catalog.mjs";
3
+ import { saucelabsGetApiDefinition } from "./actions/get-api-definition.mjs";
4
+ import { saucelabsGetApiStatus } from "./actions/get-api-status.mjs";
5
+ import { saucelabsGetAppiumEol } from "./actions/get-appium-eol.mjs";
6
+ import { saucelabsGetPlatforms } from "./actions/get-platforms.mjs";
7
+ import { saucelabsGetTunnelVersions } from "./actions/get-tunnel-versions.mjs";
8
+ import { saucelabsListJobs } from "./actions/list-jobs.mjs";
9
+ import "./actions/index.mjs";
10
+ export { saucelabs, saucelabsCatalog, saucelabsGetApiDefinition, saucelabsGetApiStatus, saucelabsGetAppiumEol, saucelabsGetPlatforms, saucelabsGetTunnelVersions, saucelabsListJobs };
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@keystrokehq/saucelabs",
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/saucelabs"
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
+ }