maxun-sdk 0.0.1

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 (58) hide show
  1. package/README.md +58 -0
  2. package/dist/builders/extract-builder.d.ts +34 -0
  3. package/dist/builders/extract-builder.d.ts.map +1 -0
  4. package/dist/builders/extract-builder.js +71 -0
  5. package/dist/builders/extract-builder.js.map +1 -0
  6. package/dist/builders/workflow-builder.d.ts +92 -0
  7. package/dist/builders/workflow-builder.d.ts.map +1 -0
  8. package/dist/builders/workflow-builder.js +207 -0
  9. package/dist/builders/workflow-builder.js.map +1 -0
  10. package/dist/client/maxun-client.d.ts +74 -0
  11. package/dist/client/maxun-client.d.ts.map +1 -0
  12. package/dist/client/maxun-client.js +210 -0
  13. package/dist/client/maxun-client.js.map +1 -0
  14. package/dist/extract.d.ts +54 -0
  15. package/dist/extract.d.ts.map +1 -0
  16. package/dist/extract.js +81 -0
  17. package/dist/extract.js.map +1 -0
  18. package/dist/index.d.ts +11 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +34 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/llm/index.d.ts +12 -0
  23. package/dist/llm/index.d.ts.map +1 -0
  24. package/dist/llm/index.js +32 -0
  25. package/dist/llm/index.js.map +1 -0
  26. package/dist/llm/providers/anthropic.d.ts +13 -0
  27. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  28. package/dist/llm/providers/anthropic.js +61 -0
  29. package/dist/llm/providers/anthropic.js.map +1 -0
  30. package/dist/llm/providers/base.d.ts +30 -0
  31. package/dist/llm/providers/base.d.ts.map +1 -0
  32. package/dist/llm/providers/base.js +27 -0
  33. package/dist/llm/providers/base.js.map +1 -0
  34. package/dist/llm/providers/ollama.d.ts +14 -0
  35. package/dist/llm/providers/ollama.d.ts.map +1 -0
  36. package/dist/llm/providers/ollama.js +56 -0
  37. package/dist/llm/providers/ollama.js.map +1 -0
  38. package/dist/llm/providers/openai.d.ts +13 -0
  39. package/dist/llm/providers/openai.d.ts.map +1 -0
  40. package/dist/llm/providers/openai.js +58 -0
  41. package/dist/llm/providers/openai.js.map +1 -0
  42. package/dist/llm/types.d.ts +25 -0
  43. package/dist/llm/types.d.ts.map +1 -0
  44. package/dist/llm/types.js +6 -0
  45. package/dist/llm/types.js.map +1 -0
  46. package/dist/robot/robot.d.ts +82 -0
  47. package/dist/robot/robot.d.ts.map +1 -0
  48. package/dist/robot/robot.js +128 -0
  49. package/dist/robot/robot.js.map +1 -0
  50. package/dist/scrape.d.ts +30 -0
  51. package/dist/scrape.d.ts.map +1 -0
  52. package/dist/scrape.js +39 -0
  53. package/dist/scrape.js.map +1 -0
  54. package/dist/types/index.d.ts +162 -0
  55. package/dist/types/index.d.ts.map +1 -0
  56. package/dist/types/index.js +16 -0
  57. package/dist/types/index.js.map +1 -0
  58. package/package.json +41 -0
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OllamaProvider = void 0;
4
+ const ollama_1 = require("ollama");
5
+ const base_1 = require("./base");
6
+ /**
7
+ * Ollama provider for local LLM inference
8
+ * Supports Llama, Mistral, and other open-source models
9
+ */
10
+ class OllamaProvider extends base_1.BaseLLMProvider {
11
+ constructor(config) {
12
+ super(config);
13
+ this.client = new ollama_1.Ollama({
14
+ host: config.baseUrl || process.env.OLLAMA_HOST || 'http://localhost:11434'
15
+ });
16
+ }
17
+ async chat(messages) {
18
+ try {
19
+ const response = await this.client.chat({
20
+ model: this.config.model || 'llama3.1',
21
+ messages: messages.map(msg => ({
22
+ role: msg.role,
23
+ content: msg.content
24
+ })),
25
+ options: {
26
+ temperature: this.config.temperature || 0.7,
27
+ num_predict: this.config.maxTokens || 2048
28
+ }
29
+ });
30
+ return {
31
+ content: response.message.content,
32
+ usage: {
33
+ promptTokens: response.prompt_eval_count || 0,
34
+ completionTokens: response.eval_count || 0,
35
+ totalTokens: (response.prompt_eval_count || 0) + (response.eval_count || 0)
36
+ }
37
+ };
38
+ }
39
+ catch (error) {
40
+ throw new Error(`Ollama API error: ${error.message || error}`);
41
+ }
42
+ }
43
+ validateConfig() {
44
+ if (!this.config.baseUrl && !process.env.OLLAMA_HOST) {
45
+ console.warn('Ollama baseUrl not provided, using default: http://localhost:11434');
46
+ }
47
+ if (!this.config.model) {
48
+ console.warn('Ollama model not specified, using default: llama3.1');
49
+ }
50
+ }
51
+ getProviderName() {
52
+ return 'Ollama';
53
+ }
54
+ }
55
+ exports.OllamaProvider = OllamaProvider;
56
+ //# sourceMappingURL=ollama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/llm/providers/ollama.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,iCAAyC;AAGzC;;;GAGG;AACH,MAAa,cAAe,SAAQ,sBAAe;IAGjD,YAAY,MAAiB;QAC3B,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC;YACvB,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,wBAAwB;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAsB;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACtC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,UAAU;gBACtC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC,CAAC;gBACH,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG;oBAC3C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI;iBAC3C;aACF,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;gBACjC,KAAK,EAAE;oBACL,YAAY,EAAE,QAAQ,CAAC,iBAAiB,IAAI,CAAC;oBAC7C,gBAAgB,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;oBAC1C,WAAW,EAAE,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;iBAC5E;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAnDD,wCAmDC"}
@@ -0,0 +1,13 @@
1
+ import { BaseLLMProvider } from './base';
2
+ import { LLMMessage, LLMResponse, LLMConfig } from '../types';
3
+ /**
4
+ * OpenAI provider for GPT models
5
+ */
6
+ export declare class OpenAIProvider extends BaseLLMProvider {
7
+ private client;
8
+ constructor(config: LLMConfig);
9
+ chat(messages: LLMMessage[]): Promise<LLMResponse>;
10
+ validateConfig(): void;
11
+ getProviderName(): string;
12
+ }
13
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9D;;GAEG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,SAAS;IASvB,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA2BxD,cAAc,IAAI,IAAI;IAUtB,eAAe,IAAI,MAAM;CAG1B"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OpenAIProvider = void 0;
7
+ const openai_1 = __importDefault(require("openai"));
8
+ const base_1 = require("./base");
9
+ /**
10
+ * OpenAI provider for GPT models
11
+ */
12
+ class OpenAIProvider extends base_1.BaseLLMProvider {
13
+ constructor(config) {
14
+ super(config);
15
+ this.client = new openai_1.default({
16
+ apiKey: config.apiKey || process.env.OPENAI_API_KEY,
17
+ baseURL: config.baseUrl // Allows custom endpoints
18
+ });
19
+ }
20
+ async chat(messages) {
21
+ try {
22
+ const response = await this.client.chat.completions.create({
23
+ model: this.config.model || 'gpt-4o-mini',
24
+ messages: messages.map(msg => ({
25
+ role: msg.role,
26
+ content: msg.content
27
+ })),
28
+ temperature: this.config.temperature || 0.7,
29
+ max_tokens: this.config.maxTokens || 4096
30
+ });
31
+ const choice = response.choices[0];
32
+ return {
33
+ content: choice.message.content || '',
34
+ usage: {
35
+ promptTokens: response.usage?.prompt_tokens || 0,
36
+ completionTokens: response.usage?.completion_tokens || 0,
37
+ totalTokens: response.usage?.total_tokens || 0
38
+ }
39
+ };
40
+ }
41
+ catch (error) {
42
+ throw new Error(`OpenAI API error: ${error.message || error}`);
43
+ }
44
+ }
45
+ validateConfig() {
46
+ if (!this.config.apiKey && !process.env.OPENAI_API_KEY) {
47
+ throw new Error('OpenAI API key required. Set OPENAI_API_KEY environment variable or provide apiKey in config.');
48
+ }
49
+ if (!this.config.model) {
50
+ console.warn('OpenAI model not specified, using default: gpt-4o-mini');
51
+ }
52
+ }
53
+ getProviderName() {
54
+ return 'OpenAI';
55
+ }
56
+ }
57
+ exports.OpenAIProvider = OpenAIProvider;
58
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/llm/providers/openai.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,iCAAyC;AAGzC;;GAEG;AACH,MAAa,cAAe,SAAQ,sBAAe;IAGjD,YAAY,MAAiB;QAC3B,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;YACnD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,0BAA0B;SACnD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAsB;QAC/B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,aAAa;gBACzC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC,CAAC;gBACH,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG;gBAC3C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI;aAC1C,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEnC,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE;gBACrC,KAAK,EAAE;oBACL,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;oBAChD,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;oBACxD,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;iBAC/C;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;QACnH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AApDD,wCAoDC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * LLM Provider Configuration
3
+ */
4
+ export type LLMProvider = 'anthropic' | 'openai' | 'ollama';
5
+ export interface LLMConfig {
6
+ provider: LLMProvider;
7
+ apiKey?: string;
8
+ baseUrl?: string;
9
+ model?: string;
10
+ temperature?: number;
11
+ maxTokens?: number;
12
+ }
13
+ export interface LLMMessage {
14
+ role: 'system' | 'user' | 'assistant';
15
+ content: string;
16
+ }
17
+ export interface LLMResponse {
18
+ content: string;
19
+ usage?: {
20
+ promptTokens: number;
21
+ completionTokens: number;
22
+ totalTokens: number;
23
+ };
24
+ }
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * LLM Provider Configuration
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Robot class - represents a saved workflow that can be executed
3
+ */
4
+ import { RunResult, RobotData, ScheduleConfig, WebhookConfig, ExecutionOptions, Run } from '../types';
5
+ import { Client } from '../client/maxun-client';
6
+ export declare class Robot {
7
+ protected client: Client;
8
+ protected robotData: RobotData;
9
+ constructor(client: Client, robotData: RobotData);
10
+ /**
11
+ * Get the robot ID
12
+ */
13
+ get id(): string;
14
+ /**
15
+ * Get the robot name
16
+ */
17
+ get name(): string;
18
+ /**
19
+ * Get the full robot data
20
+ */
21
+ getData(): RobotData;
22
+ /**
23
+ * Execute the robot
24
+ */
25
+ run(options?: ExecutionOptions): Promise<RunResult>;
26
+ /**
27
+ * Get all runs for this robot
28
+ */
29
+ getRuns(): Promise<Run[]>;
30
+ /**
31
+ * Get a specific run
32
+ */
33
+ getRun(runId: string): Promise<Run>;
34
+ /**
35
+ * Get the latest run
36
+ */
37
+ getLatestRun(): Promise<Run | null>;
38
+ /**
39
+ * Abort a running or queued run
40
+ */
41
+ abort(runId: string): Promise<void>;
42
+ /**
43
+ * Schedule the robot for periodic execution
44
+ */
45
+ schedule(config: ScheduleConfig): Promise<void>;
46
+ /**
47
+ * Remove the schedule
48
+ */
49
+ unschedule(): Promise<void>;
50
+ /**
51
+ * Add a webhook
52
+ */
53
+ addWebhook(webhook: WebhookConfig): Promise<void>;
54
+ /**
55
+ * Update the robot's workflow or metadata
56
+ */
57
+ update(updates: {
58
+ meta?: Partial<RobotData['recording_meta']>;
59
+ workflow?: any[];
60
+ }): Promise<void>;
61
+ /**
62
+ * Get all webhooks for this robot
63
+ */
64
+ getWebhooks(): WebhookConfig[] | null;
65
+ /**
66
+ * Remove all webhooks
67
+ */
68
+ removeWebhooks(): Promise<void>;
69
+ /**
70
+ * Get schedule configuration
71
+ */
72
+ getSchedule(): ScheduleConfig | null;
73
+ /**
74
+ * Delete the robot
75
+ */
76
+ delete(): Promise<void>;
77
+ /**
78
+ * Refresh robot data from server
79
+ */
80
+ refresh(): Promise<void>;
81
+ }
82
+ //# sourceMappingURL=robot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robot.d.ts","sourceRoot":"","sources":["../../src/robot/robot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,qBAAa,KAAK;IAChB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;gBAEnB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;IAKhD;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,CAEf;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,OAAO,IAAI,SAAS;IAIpB;;OAEG;IACG,GAAG,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAIzD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAI/B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAYzC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvG;;OAEG;IACH,WAAW,IAAI,aAAa,EAAE,GAAG,IAAI;IAIrC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrC;;OAEG;IACH,WAAW,IAAI,cAAc,GAAG,IAAI;IAIpC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ /**
3
+ * Robot class - represents a saved workflow that can be executed
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Robot = void 0;
7
+ class Robot {
8
+ constructor(client, robotData) {
9
+ this.client = client;
10
+ this.robotData = robotData;
11
+ }
12
+ /**
13
+ * Get the robot ID
14
+ */
15
+ get id() {
16
+ return this.robotData.recording_meta.id;
17
+ }
18
+ /**
19
+ * Get the robot name
20
+ */
21
+ get name() {
22
+ return this.robotData.recording_meta.name;
23
+ }
24
+ /**
25
+ * Get the full robot data
26
+ */
27
+ getData() {
28
+ return this.robotData;
29
+ }
30
+ /**
31
+ * Execute the robot
32
+ */
33
+ async run(options) {
34
+ return await this.client.executeRobot(this.id, options);
35
+ }
36
+ /**
37
+ * Get all runs for this robot
38
+ */
39
+ async getRuns() {
40
+ return await this.client.getRuns(this.id);
41
+ }
42
+ /**
43
+ * Get a specific run
44
+ */
45
+ async getRun(runId) {
46
+ return await this.client.getRun(this.id, runId);
47
+ }
48
+ /**
49
+ * Get the latest run
50
+ */
51
+ async getLatestRun() {
52
+ const runs = await this.getRuns();
53
+ if (runs.length === 0)
54
+ return null;
55
+ // Sort by startedAt descending
56
+ runs.sort((a, b) => new Date(b.startedAt).getTime() - new Date(a.startedAt).getTime());
57
+ return runs[0];
58
+ }
59
+ /**
60
+ * Abort a running or queued run
61
+ */
62
+ async abort(runId) {
63
+ await this.client.abortRun(this.id, runId);
64
+ }
65
+ /**
66
+ * Schedule the robot for periodic execution
67
+ */
68
+ async schedule(config) {
69
+ const updated = await this.client.scheduleRobot(this.id, config);
70
+ this.robotData = updated;
71
+ }
72
+ /**
73
+ * Remove the schedule
74
+ */
75
+ async unschedule() {
76
+ const updated = await this.client.unscheduleRobot(this.id);
77
+ this.robotData = updated;
78
+ }
79
+ /**
80
+ * Add a webhook
81
+ */
82
+ async addWebhook(webhook) {
83
+ const updated = await this.client.addWebhook(this.id, webhook);
84
+ this.robotData = updated;
85
+ }
86
+ /**
87
+ * Update the robot's workflow or metadata
88
+ */
89
+ async update(updates) {
90
+ const updated = await this.client.updateRobot(this.id, updates);
91
+ this.robotData = updated;
92
+ }
93
+ /**
94
+ * Get all webhooks for this robot
95
+ */
96
+ getWebhooks() {
97
+ return this.robotData.webhooks || null;
98
+ }
99
+ /**
100
+ * Remove all webhooks
101
+ */
102
+ async removeWebhooks() {
103
+ const updated = await this.client.updateRobot(this.id, {
104
+ webhooks: null,
105
+ });
106
+ this.robotData = updated;
107
+ }
108
+ /**
109
+ * Get schedule configuration
110
+ */
111
+ getSchedule() {
112
+ return this.robotData.schedule || null;
113
+ }
114
+ /**
115
+ * Delete the robot
116
+ */
117
+ async delete() {
118
+ await this.client.deleteRobot(this.id);
119
+ }
120
+ /**
121
+ * Refresh robot data from server
122
+ */
123
+ async refresh() {
124
+ this.robotData = await this.client.getRobot(this.id);
125
+ }
126
+ }
127
+ exports.Robot = Robot;
128
+ //# sourceMappingURL=robot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"robot.js","sourceRoot":"","sources":["../../src/robot/robot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Scrape - Main class for the Scrape SDK
3
+ */
4
+ import { Config, Format } from './types';
5
+ import { Robot } from './robot/robot';
6
+ export interface ScrapeOptions {
7
+ /**
8
+ * Output formats for scraping
9
+ * - 'markdown': Page content in markdown format
10
+ * - 'html': Page content in HTML format
11
+ * - 'screenshot-visible': Screenshot of visible viewport
12
+ * - 'screenshot-fullpage': Full page screenshot
13
+ *
14
+ * Default: ['markdown']
15
+ */
16
+ formats?: Format[];
17
+ }
18
+ export declare class Scrape {
19
+ private client;
20
+ constructor(config: Config);
21
+ /**
22
+ * Create a new scraping robot
23
+ * @param name - Name of the scraping robot
24
+ * @param url - URL to scrape
25
+ * @param options - Optional scraping options (formats)
26
+ * @returns Promise<Robot>
27
+ */
28
+ create(name: string, url: string, options?: ScrapeOptions): Promise<Robot>;
29
+ }
30
+ //# sourceMappingURL=scrape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrape.d.ts","sourceRoot":"","sources":["../src/scrape.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAA2B,MAAM,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;CAmBjF"}
package/dist/scrape.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * Scrape - Main class for the Scrape SDK
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Scrape = void 0;
7
+ const maxun_client_1 = require("./client/maxun-client");
8
+ const robot_1 = require("./robot/robot");
9
+ class Scrape {
10
+ constructor(config) {
11
+ this.client = new maxun_client_1.Client(config);
12
+ }
13
+ /**
14
+ * Create a new scraping robot
15
+ * @param name - Name of the scraping robot
16
+ * @param url - URL to scrape
17
+ * @param options - Optional scraping options (formats)
18
+ * @returns Promise<Robot>
19
+ */
20
+ async create(name, url, options) {
21
+ if (!url) {
22
+ throw new Error('URL is required');
23
+ }
24
+ const workflowFile = {
25
+ meta: {
26
+ name,
27
+ id: `robot_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
28
+ robotType: 'scrape',
29
+ url,
30
+ formats: options?.formats || ['markdown'],
31
+ },
32
+ workflow: [],
33
+ };
34
+ const robot = await this.client.createRobot(workflowFile);
35
+ return new robot_1.Robot(this.client, robot);
36
+ }
37
+ }
38
+ exports.Scrape = Scrape;
39
+ //# sourceMappingURL=scrape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrape.js","sourceRoot":"","sources":["../src/scrape.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,wDAA+C;AAG/C,yCAAsC;AAetC,MAAa,MAAM;IAGjB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,GAAW,EAAE,OAAuB;QAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,YAAY,GAAiB;YACjC,IAAI,EAAE;gBACJ,IAAI;gBACJ,EAAE,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBACpE,SAAS,EAAE,QAAQ;gBACnB,GAAG;gBACH,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC;aACnC;YACR,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1D,OAAO,IAAI,aAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;CACF;AAjCD,wBAiCC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Unified type definitions for Maxun SDK
3
+ */
4
+ export type RobotType = 'extract' | 'scrape';
5
+ export type RobotMode = 'normal' | 'bulk';
6
+ export type Format = 'markdown' | 'html' | 'screenshot-visible' | 'screenshot-fullpage';
7
+ export type RunStatus = 'running' | 'queued' | 'success' | 'failed' | 'aborting' | 'aborted';
8
+ export type TimeUnit = 'MINUTES' | 'HOURS' | 'DAYS' | 'WEEKS' | 'MONTHS';
9
+ export interface RobotMeta {
10
+ name: string;
11
+ id: string;
12
+ robotType?: RobotType;
13
+ mode?: RobotMode;
14
+ url?: string;
15
+ formats?: Format[];
16
+ subscriptionLevel?: number;
17
+ }
18
+ export interface Where {
19
+ url?: string;
20
+ cookies?: Array<{
21
+ name: string;
22
+ value: string;
23
+ domain?: string;
24
+ }>;
25
+ [key: string]: any;
26
+ }
27
+ export interface What {
28
+ action: string;
29
+ args?: any[];
30
+ name?: string;
31
+ actionId?: string;
32
+ }
33
+ export interface WhereWhatPair {
34
+ id?: string;
35
+ where: Where;
36
+ what: What[];
37
+ }
38
+ export type Workflow = WhereWhatPair[];
39
+ export interface WorkflowFile {
40
+ meta?: RobotMeta;
41
+ workflow: Workflow;
42
+ }
43
+ export interface RobotData {
44
+ id: string;
45
+ userId?: number;
46
+ recording_meta: RobotMeta;
47
+ recording: {
48
+ meta: RobotMeta;
49
+ workflow: Workflow;
50
+ };
51
+ google_sheet_email?: string | null;
52
+ google_sheet_name?: string | null;
53
+ airtable_base_id?: string | null;
54
+ airtable_table_name?: string | null;
55
+ schedule?: ScheduleConfig | null;
56
+ webhooks?: WebhookConfig[] | null;
57
+ proxy_url?: string | null;
58
+ proxy_username?: string | null;
59
+ proxy_password?: string | null;
60
+ createdAt?: string;
61
+ updatedAt?: string;
62
+ }
63
+ export interface Run {
64
+ id: string;
65
+ status: RunStatus;
66
+ robotMetaId: string;
67
+ runId: string;
68
+ startedAt: string;
69
+ finishedAt: string | null;
70
+ serializableOutput?: {
71
+ scrapeSchema?: Record<string, any>;
72
+ scrapeList?: Record<string, any>[];
73
+ };
74
+ binaryOutput?: Record<string, string>;
75
+ error?: string;
76
+ }
77
+ export interface ScheduleConfig {
78
+ runEvery: number;
79
+ runEveryUnit: TimeUnit;
80
+ timezone: string;
81
+ startFrom?: 'SUNDAY' | 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY';
82
+ dayOfMonth?: number;
83
+ atTimeStart?: string;
84
+ atTimeEnd?: string;
85
+ cronExpression?: string;
86
+ lastRunAt?: string;
87
+ nextRunAt?: string;
88
+ }
89
+ export interface WebhookConfig {
90
+ url: string;
91
+ events?: string[];
92
+ headers?: Record<string, string>;
93
+ }
94
+ export interface Config {
95
+ apiKey: string;
96
+ baseUrl?: string;
97
+ }
98
+ export interface ApiResponse<T> {
99
+ data?: T;
100
+ error?: string;
101
+ message?: string;
102
+ }
103
+ export interface RunResult {
104
+ data: {
105
+ textData?: Record<string, any>;
106
+ listData?: Record<string, any>[];
107
+ markdown?: string;
108
+ html?: string;
109
+ binaryOutput?: Record<string, string>;
110
+ };
111
+ screenshots?: string[];
112
+ status: RunStatus;
113
+ runId: string;
114
+ }
115
+ export interface ExecutionOptions {
116
+ params?: Record<string, any>;
117
+ webhook?: WebhookConfig;
118
+ timeout?: number;
119
+ waitForCompletion?: boolean;
120
+ }
121
+ export declare class MaxunError extends Error {
122
+ statusCode?: number | undefined;
123
+ details?: any | undefined;
124
+ constructor(message: string, statusCode?: number | undefined, details?: any | undefined);
125
+ }
126
+ export interface ExtractFields {
127
+ [fieldName: string]: string;
128
+ }
129
+ export interface ExtractListConfig {
130
+ selector: string;
131
+ pagination?: PaginationConfig;
132
+ maxItems?: number;
133
+ }
134
+ export interface PaginationConfig {
135
+ type: 'scrollDown' | 'clickNext' | 'clickLoadMore' | 'scrollUp';
136
+ selector?: string | null;
137
+ }
138
+ /**
139
+ * LLM Provider Configuration
140
+ */
141
+ export type LLMProvider = 'anthropic' | 'openai' | 'ollama';
142
+ export interface LLMConfig {
143
+ provider: LLMProvider;
144
+ apiKey?: string;
145
+ baseUrl?: string;
146
+ model?: string;
147
+ temperature?: number;
148
+ maxTokens?: number;
149
+ }
150
+ export interface LLMMessage {
151
+ role: 'system' | 'user' | 'assistant';
152
+ content: string;
153
+ }
154
+ export interface LLMResponse {
155
+ content: string;
156
+ usage?: {
157
+ promptTokens: number;
158
+ completionTokens: number;
159
+ totalTokens: number;
160
+ };
161
+ }
162
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}