@eko-ai/eko 1.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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/dist/core/eko.d.ts +17 -0
  4. package/dist/core/tool-registry.d.ts +13 -0
  5. package/dist/extension/content/index.d.ts +7 -0
  6. package/dist/extension/core.d.ts +11 -0
  7. package/dist/extension/index.d.ts +7 -0
  8. package/dist/extension/script/bing.js +25 -0
  9. package/dist/extension/script/build_dom_tree.js +657 -0
  10. package/dist/extension/script/common.js +204 -0
  11. package/dist/extension/script/duckduckgo.js +25 -0
  12. package/dist/extension/script/google.js +26 -0
  13. package/dist/extension/tools/browser.d.ts +21 -0
  14. package/dist/extension/tools/browser_use.d.ts +18 -0
  15. package/dist/extension/tools/element_click.d.ts +12 -0
  16. package/dist/extension/tools/export_file.d.ts +18 -0
  17. package/dist/extension/tools/extract_content.d.ts +18 -0
  18. package/dist/extension/tools/find_element_position.d.ts +12 -0
  19. package/dist/extension/tools/form_autofill.d.ts +11 -0
  20. package/dist/extension/tools/html_script.d.ts +21 -0
  21. package/dist/extension/tools/index.d.ts +11 -0
  22. package/dist/extension/tools/open_url.d.ts +18 -0
  23. package/dist/extension/tools/screenshot.d.ts +18 -0
  24. package/dist/extension/tools/tab_management.d.ts +19 -0
  25. package/dist/extension/tools/web_search.d.ts +18 -0
  26. package/dist/extension/utils.d.ts +30 -0
  27. package/dist/extension.cjs.js +1783 -0
  28. package/dist/extension.esm.js +1776 -0
  29. package/dist/extension_content_script.js +247 -0
  30. package/dist/fellou/computer.d.ts +20 -0
  31. package/dist/fellou/index.d.ts +6 -0
  32. package/dist/fellou/tools/computer_use.d.ts +18 -0
  33. package/dist/fellou/tools/index.d.ts +2 -0
  34. package/dist/fellou.cjs.js +238 -0
  35. package/dist/fellou.esm.js +235 -0
  36. package/dist/index.cjs.js +9350 -0
  37. package/dist/index.d.ts +8 -0
  38. package/dist/index.esm.js +9340 -0
  39. package/dist/models/action.d.ts +20 -0
  40. package/dist/models/workflow.d.ts +15 -0
  41. package/dist/nodejs/index.d.ts +2 -0
  42. package/dist/nodejs/tools/index.d.ts +1 -0
  43. package/dist/nodejs.cjs.js +7 -0
  44. package/dist/nodejs.esm.js +5 -0
  45. package/dist/schemas/workflow.schema.d.ts +85 -0
  46. package/dist/services/llm/claude-provider.d.ts +10 -0
  47. package/dist/services/llm/openai-provider.d.ts +10 -0
  48. package/dist/services/parser/workflow-parser.d.ts +29 -0
  49. package/dist/services/workflow/generator.d.ts +11 -0
  50. package/dist/services/workflow/templates.d.ts +7 -0
  51. package/dist/types/action.types.d.ts +36 -0
  52. package/dist/types/eko.types.d.ts +21 -0
  53. package/dist/types/framework.types.d.ts +11 -0
  54. package/dist/types/index.d.ts +6 -0
  55. package/dist/types/llm.types.d.ts +54 -0
  56. package/dist/types/parser.types.d.ts +9 -0
  57. package/dist/types/tools.types.d.ts +88 -0
  58. package/dist/types/workflow.types.d.ts +39 -0
  59. package/dist/web/index.d.ts +2 -0
  60. package/dist/web/tools/index.d.ts +1 -0
  61. package/dist/web.cjs.js +7 -0
  62. package/dist/web.esm.js +5 -0
  63. package/package.json +108 -0
@@ -0,0 +1,20 @@
1
+ import { Action, Tool, ExecutionContext } from '../types/action.types';
2
+ import { LLMProvider, LLMParameters } from '../types/llm.types';
3
+ export declare class ActionImpl implements Action {
4
+ type: 'prompt';
5
+ name: string;
6
+ tools: Tool<any, any>[];
7
+ private llmProvider;
8
+ private llmConfig?;
9
+ private readonly maxRounds;
10
+ private writeContextTool;
11
+ constructor(type: 'prompt', // Only support prompt type
12
+ name: string, tools: Tool<any, any>[], llmProvider: LLMProvider, llmConfig?: LLMParameters | undefined, config?: {
13
+ maxRounds?: number;
14
+ });
15
+ private executeSingleRound;
16
+ execute(input: unknown, context: ExecutionContext, outputSchema?: unknown): Promise<unknown>;
17
+ private formatSystemPrompt;
18
+ private formatUserPrompt;
19
+ static createPromptAction(name: string, tools: Tool<any, any>[], llmProvider: LLMProvider, llmConfig?: LLMParameters): Action;
20
+ }
@@ -0,0 +1,15 @@
1
+ import { Workflow, WorkflowNode, LLMProvider, WorkflowCallback } from "../types";
2
+ export declare class WorkflowImpl implements Workflow {
3
+ id: string;
4
+ name: string;
5
+ description?: string | undefined;
6
+ nodes: WorkflowNode[];
7
+ variables: Map<string, unknown>;
8
+ llmProvider?: LLMProvider | undefined;
9
+ constructor(id: string, name: string, description?: string | undefined, nodes?: WorkflowNode[], variables?: Map<string, unknown>, llmProvider?: LLMProvider | undefined);
10
+ execute(callback?: WorkflowCallback): Promise<void>;
11
+ addNode(node: WorkflowNode): void;
12
+ removeNode(nodeId: string): void;
13
+ getNode(nodeId: string): WorkflowNode;
14
+ validateDAG(): boolean;
15
+ }
@@ -0,0 +1,2 @@
1
+ import * as tools from './tools';
2
+ export { tools };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var index = /*#__PURE__*/Object.freeze({
4
+ __proto__: null
5
+ });
6
+
7
+ exports.tools = index;
@@ -0,0 +1,5 @@
1
+ var index = /*#__PURE__*/Object.freeze({
2
+ __proto__: null
3
+ });
4
+
5
+ export { index as tools };
@@ -0,0 +1,85 @@
1
+ export declare const workflowSchema: {
2
+ type: string;
3
+ required: string[];
4
+ properties: {
5
+ id: {
6
+ type: string;
7
+ };
8
+ name: {
9
+ type: string;
10
+ };
11
+ description: {
12
+ type: string;
13
+ };
14
+ nodes: {
15
+ type: string;
16
+ items: {
17
+ type: string;
18
+ required: string[];
19
+ properties: {
20
+ id: {
21
+ type: string;
22
+ };
23
+ type: {
24
+ type: string;
25
+ enum: string[];
26
+ };
27
+ dependencies: {
28
+ type: string;
29
+ items: {
30
+ type: string;
31
+ };
32
+ };
33
+ input: {
34
+ type: string;
35
+ properties: {
36
+ type: {
37
+ type: string;
38
+ };
39
+ schema: {
40
+ type: string;
41
+ };
42
+ };
43
+ };
44
+ output: {
45
+ type: string;
46
+ properties: {
47
+ type: {
48
+ type: string;
49
+ };
50
+ schema: {
51
+ type: string;
52
+ };
53
+ };
54
+ };
55
+ action: {
56
+ type: string;
57
+ required: string[];
58
+ properties: {
59
+ type: {
60
+ type: string;
61
+ enum: string[];
62
+ };
63
+ name: {
64
+ type: string;
65
+ };
66
+ params: {
67
+ type: string;
68
+ };
69
+ tools: {
70
+ type: string;
71
+ items: {
72
+ type: string;
73
+ };
74
+ };
75
+ };
76
+ };
77
+ };
78
+ };
79
+ };
80
+ variables: {
81
+ type: string;
82
+ additionalProperties: boolean;
83
+ };
84
+ };
85
+ };
@@ -0,0 +1,10 @@
1
+ import { ClientOptions } from '@anthropic-ai/sdk';
2
+ import { LLMProvider, LLMParameters, LLMResponse, Message, LLMStreamHandler } from '../../types/llm.types';
3
+ export declare class ClaudeProvider implements LLMProvider {
4
+ private client;
5
+ private defaultModel;
6
+ constructor(apiKey: string, defaultModel?: string | null, options?: ClientOptions);
7
+ private processResponse;
8
+ generateText(messages: Message[], params: LLMParameters): Promise<LLMResponse>;
9
+ generateStream(messages: Message[], params: LLMParameters, handler: LLMStreamHandler): Promise<void>;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { ClientOptions } from 'openai';
2
+ import { LLMProvider, LLMParameters, LLMResponse, Message, LLMStreamHandler } from '../../types/llm.types';
3
+ export declare class OpenaiProvider implements LLMProvider {
4
+ private client;
5
+ private defaultModel;
6
+ constructor(apiKey: string, defaultModel?: string | null, options?: ClientOptions);
7
+ private buildParams;
8
+ generateText(messages: Message[], params: LLMParameters): Promise<LLMResponse>;
9
+ generateStream(messages: Message[], params: LLMParameters, handler: LLMStreamHandler): Promise<void>;
10
+ }
@@ -0,0 +1,29 @@
1
+ import { Workflow } from '../../types/workflow.types';
2
+ import { ValidationResult } from '../../types/parser.types';
3
+ export declare class WorkflowParser {
4
+ /**
5
+ * Parse JSON string into runtime Workflow object
6
+ * @throws {Error} if JSON is invalid or schema validation fails
7
+ */
8
+ static parse(json: string): Workflow;
9
+ /**
10
+ * Convert runtime Workflow object to JSON string
11
+ */
12
+ static serialize(workflow: Workflow): string;
13
+ /**
14
+ * Validate workflow JSON structure against schema
15
+ */
16
+ static validate(json: unknown): ValidationResult;
17
+ /**
18
+ * Convert parsed JSON to runtime Workflow object
19
+ */
20
+ private static toRuntime;
21
+ /**
22
+ * Convert runtime Workflow object to JSON structure
23
+ */
24
+ private static fromRuntime;
25
+ /**
26
+ * Helper to convert IO definitions
27
+ */
28
+ private static convertIO;
29
+ }
@@ -0,0 +1,11 @@
1
+ import { LLMProvider } from '../../types/llm.types';
2
+ import { Workflow } from '../../types/workflow.types';
3
+ import { ToolRegistry } from '../../core/tool-registry';
4
+ export declare class WorkflowGenerator {
5
+ private llmProvider;
6
+ private toolRegistry;
7
+ constructor(llmProvider: LLMProvider, toolRegistry: ToolRegistry);
8
+ generateWorkflow(prompt: string): Promise<Workflow>;
9
+ private createWorkflowFromData;
10
+ modifyWorkflow(workflow: Workflow, prompt: string): Promise<Workflow>;
11
+ }
@@ -0,0 +1,7 @@
1
+ import { ToolDefinition } from '../../types/llm.types';
2
+ import { ToolRegistry } from '../../core/tool-registry';
3
+ export declare function createWorkflowPrompts(tools: ToolDefinition[]): {
4
+ formatSystemPrompt: () => string;
5
+ formatUserPrompt: (requirement: string) => string;
6
+ };
7
+ export declare function createWorkflowGenerationTool(registry: ToolRegistry): ToolDefinition;
@@ -0,0 +1,36 @@
1
+ import { LLMProvider } from "./llm.types";
2
+ import { WorkflowCallback } from "./workflow.types";
3
+ export interface Tool<T, R> {
4
+ name: string;
5
+ description: string;
6
+ input_schema: InputSchema;
7
+ execute: (context: ExecutionContext, params: T) => Promise<R>;
8
+ destroy?: (context: ExecutionContext) => void;
9
+ }
10
+ export interface InputSchema {
11
+ type: 'object';
12
+ properties?: Properties;
13
+ required?: Array<string>;
14
+ }
15
+ export interface Properties {
16
+ [key: string]: Property;
17
+ }
18
+ export interface Property {
19
+ type: 'string' | 'integer' | 'boolean' | 'array' | 'object';
20
+ description?: string;
21
+ items?: InputSchema;
22
+ enum?: Array<string | number>;
23
+ properties?: Properties;
24
+ }
25
+ export interface ExecutionContext {
26
+ llmProvider: LLMProvider;
27
+ variables: Map<string, unknown>;
28
+ tools?: Map<string, Tool<any, any>>;
29
+ callback?: WorkflowCallback;
30
+ }
31
+ export interface Action {
32
+ type: 'prompt' | 'script' | 'hybrid';
33
+ name: string;
34
+ execute: (input: unknown, context: ExecutionContext) => Promise<unknown>;
35
+ tools: Tool<any, any>[];
36
+ }
@@ -0,0 +1,21 @@
1
+ import { ClientOptions as OpenAiClientOptions } from 'openai';
2
+ import { ClientOptions as ClaudeClientOption } from '@anthropic-ai/sdk';
3
+ import { LLMProvider } from './llm.types';
4
+ import { Tool } from './action.types';
5
+ export interface ClaudeConfig {
6
+ llm: 'claude';
7
+ apiKey: string;
8
+ modelName?: string;
9
+ options?: ClaudeClientOption;
10
+ }
11
+ export interface OpenaiConfig {
12
+ llm: 'openai';
13
+ apiKey: string;
14
+ modelName?: string;
15
+ options?: OpenAiClientOptions;
16
+ }
17
+ export type ClaudeApiKey = string;
18
+ export type EkoConfig = ClaudeApiKey | ClaudeConfig | OpenaiConfig | LLMProvider;
19
+ export interface EkoInvokeParam {
20
+ tools?: Array<string> | Array<Tool<any, any>>;
21
+ }
@@ -0,0 +1,11 @@
1
+ import { LLMConfig } from './llm.types';
2
+ import { WorkflowNode, Workflow } from './workflow.types';
3
+ import { ExecutionContext } from './action.types';
4
+ export interface EkoFramework {
5
+ generateWorkflow(prompt: string, llmConfig: LLMConfig): Promise<Workflow>;
6
+ addNode(workflow: Workflow, node: WorkflowNode): Workflow;
7
+ removeNode(workflow: Workflow, nodeId: string): Workflow;
8
+ updateNode(workflow: Workflow, nodeId: string, updates: Partial<WorkflowNode>): Workflow;
9
+ modifyWorkflowWithPrompt(workflow: Workflow, prompt: string, llmConfig: LLMConfig): Promise<Workflow>;
10
+ executeWorkflow(workflow: Workflow, context?: ExecutionContext, llmConfig?: LLMConfig): Promise<void>;
11
+ }
@@ -0,0 +1,6 @@
1
+ export * from './action.types';
2
+ export * from './workflow.types';
3
+ export * from './eko.types';
4
+ export * from './llm.types';
5
+ export * from './tools.types';
6
+ export * from './framework.types';
@@ -0,0 +1,54 @@
1
+ export interface Message {
2
+ role: 'user' | 'assistant' | 'system';
3
+ content: string | unknown[];
4
+ }
5
+ export interface ToolDefinition {
6
+ name: string;
7
+ description: string;
8
+ input_schema: {
9
+ type: "object";
10
+ properties: Record<string, unknown>;
11
+ required?: string[];
12
+ };
13
+ }
14
+ export interface LLMConfig {
15
+ }
16
+ export interface ToolCall {
17
+ id: string;
18
+ name: string;
19
+ input: Record<string, unknown>;
20
+ }
21
+ export interface ToolResult {
22
+ tool_use_id: string;
23
+ content: string | Array<{
24
+ type: string;
25
+ text: string;
26
+ }>;
27
+ }
28
+ export interface LLMParameters {
29
+ model?: string;
30
+ temperature?: number;
31
+ maxTokens?: number;
32
+ tools?: ToolDefinition[];
33
+ toolChoice?: {
34
+ type: 'auto' | 'tool' | 'any';
35
+ name?: string;
36
+ };
37
+ }
38
+ export interface LLMResponse {
39
+ textContent: string | null;
40
+ content: string | unknown[];
41
+ toolCalls: ToolCall[];
42
+ stop_reason: string | null;
43
+ }
44
+ export interface LLMStreamHandler {
45
+ onStart?: () => void;
46
+ onContent?: (content: string) => void;
47
+ onToolUse?: (toolCall: ToolCall) => void;
48
+ onComplete?: (response: LLMResponse) => void;
49
+ onError?: (error: Error) => void;
50
+ }
51
+ export interface LLMProvider {
52
+ generateText(messages: Message[], params: LLMParameters): Promise<LLMResponse>;
53
+ generateStream(messages: Message[], params: LLMParameters, handler: LLMStreamHandler): Promise<void>;
54
+ }
@@ -0,0 +1,9 @@
1
+ export interface ValidationError {
2
+ type: "schema" | "reference" | "type" | "tool";
3
+ message: string;
4
+ path?: string;
5
+ }
6
+ export interface ValidationResult {
7
+ valid: boolean;
8
+ errors: ValidationError[];
9
+ }
@@ -0,0 +1,88 @@
1
+ export interface ComputerUseParam {
2
+ action: string;
3
+ coordinate?: [number, number];
4
+ text?: string;
5
+ }
6
+ export interface ComputerUseResult {
7
+ success: boolean;
8
+ image?: ScreenshotImage;
9
+ [key: string]: any;
10
+ }
11
+ export interface BrowserUseParam {
12
+ action: string;
13
+ index?: number;
14
+ text?: string;
15
+ }
16
+ export interface BrowserUseResult {
17
+ success: boolean;
18
+ image?: ScreenshotImage;
19
+ text?: string;
20
+ [key: string]: any;
21
+ }
22
+ export interface ExportFileParam {
23
+ content: string;
24
+ fileType: 'txt' | 'csv' | 'md' | 'html' | 'js' | 'xml' | 'json' | 'yml' | 'sql';
25
+ filename?: string;
26
+ }
27
+ export interface ExtractContentResult {
28
+ tabId: number;
29
+ result: {
30
+ title?: string;
31
+ url?: string;
32
+ content: string;
33
+ };
34
+ }
35
+ export interface OpenUrlParam {
36
+ url: string;
37
+ newWindow?: boolean;
38
+ }
39
+ export interface OpenUrlResult {
40
+ tabId: number;
41
+ windowId: number;
42
+ title?: string;
43
+ }
44
+ export interface ScreenshotResult {
45
+ image: ScreenshotImage;
46
+ }
47
+ export interface ScreenshotImage {
48
+ type: 'base64';
49
+ media_type: 'image/png' | 'image/jpeg';
50
+ data: string;
51
+ }
52
+ export interface TabManagementParam {
53
+ commond: string;
54
+ }
55
+ export type TabManagementResult = TabInfo | CloseTabInfo | TabInfo[];
56
+ export interface TabInfo {
57
+ tabId?: number;
58
+ windowId?: number;
59
+ title?: string;
60
+ url?: string;
61
+ active?: boolean;
62
+ }
63
+ export interface CloseTabInfo {
64
+ closedTabId: number;
65
+ newTabId?: number;
66
+ newTabTitle?: string;
67
+ }
68
+ export interface WebSearchParam {
69
+ url?: string;
70
+ query: string;
71
+ maxResults?: number;
72
+ }
73
+ export interface WebSearchResult {
74
+ title: string;
75
+ url: string;
76
+ content: string;
77
+ }
78
+ export interface TaskPrompt {
79
+ task_prompt: string;
80
+ }
81
+ export interface ElementRect {
82
+ left: number;
83
+ top: number;
84
+ right?: number;
85
+ bottom?: number;
86
+ width?: number;
87
+ height?: number;
88
+ }
@@ -0,0 +1,39 @@
1
+ import { Action, ExecutionContext, Tool } from "./action.types";
2
+ import { LLMProvider } from "./llm.types";
3
+ export interface WorkflowNode {
4
+ id: string;
5
+ name: string;
6
+ description?: string;
7
+ input: NodeIO;
8
+ output: NodeIO;
9
+ action: Action;
10
+ dependencies: string[];
11
+ }
12
+ export interface NodeIO {
13
+ type: string;
14
+ schema: object;
15
+ value: unknown;
16
+ }
17
+ export interface Workflow {
18
+ id: string;
19
+ name: string;
20
+ description?: string;
21
+ nodes: WorkflowNode[];
22
+ variables: Map<string, any>;
23
+ llmProvider?: LLMProvider;
24
+ execute(callback?: WorkflowCallback): Promise<void>;
25
+ addNode(node: WorkflowNode): void;
26
+ removeNode(nodeId: string): void;
27
+ getNode(nodeId: string): WorkflowNode;
28
+ validateDAG(): boolean;
29
+ }
30
+ export interface WorkflowCallback {
31
+ hooks: {
32
+ beforeWorkflow?: (workflow: Workflow) => Promise<void>;
33
+ beforeSubtask?: (subtask: WorkflowNode, context: ExecutionContext) => Promise<void>;
34
+ beforeToolUse?: (tool: Tool<any, any>, context: ExecutionContext, input: any) => Promise<any>;
35
+ afterToolUse?: (tool: Tool<any, any>, context: ExecutionContext, result: any) => Promise<any>;
36
+ afterSubtask?: (subtask: WorkflowNode, context: ExecutionContext, result: any) => Promise<void>;
37
+ afterWorkflow?: (workflow: Workflow, variables: Map<string, unknown>) => Promise<void>;
38
+ };
39
+ }
@@ -0,0 +1,2 @@
1
+ import * as tools from './tools';
2
+ export { tools };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var index = /*#__PURE__*/Object.freeze({
4
+ __proto__: null
5
+ });
6
+
7
+ exports.tools = index;
@@ -0,0 +1,5 @@
1
+ var index = /*#__PURE__*/Object.freeze({
2
+ __proto__: null
3
+ });
4
+
5
+ export { index as tools };
package/package.json ADDED
@@ -0,0 +1,108 @@
1
+ {
2
+ "name": "@eko-ai/eko",
3
+ "version": "1.0.1",
4
+ "description": "Empowering language to transform human words into action.",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "type": "module",
9
+ "files": [
10
+ "dist/",
11
+ "LICENSE",
12
+ "README.md"
13
+ ],
14
+ "exports": {
15
+ ".": {
16
+ "require": "./dist/index.cjs.js",
17
+ "import": "./dist/index.esm.js",
18
+ "types": "./dist/index.d.ts"
19
+ },
20
+ "./types": {
21
+ "types": "./dist/types/index.d.ts"
22
+ },
23
+ "./extension": {
24
+ "require": "./dist/extension.cjs.js",
25
+ "import": "./dist/extension.esm.js",
26
+ "types": "./dist/extension/index.d.ts"
27
+ },
28
+ "./web": {
29
+ "require": "./dist/web.cjs.js",
30
+ "import": "./dist/web.esm.js",
31
+ "types": "./dist/web/index.d.ts"
32
+ },
33
+ "./nodejs": {
34
+ "require": "./dist/nodejs.cjs.js",
35
+ "import": "./dist/nodejs.esm.js",
36
+ "types": "./dist/nodejs/index.d.ts"
37
+ },
38
+ "./fellou": {
39
+ "require": "./dist/fellou.cjs.js",
40
+ "import": "./dist/fellou.esm.js",
41
+ "types": "./dist/fellou/index.d.ts"
42
+ }
43
+ },
44
+ "directories": {
45
+ "test": "test",
46
+ "doc": "docs"
47
+ },
48
+ "scripts": {
49
+ "build": "rollup -c",
50
+ "build:dev": "npm run build && npm link",
51
+ "dev": "tsc --watch",
52
+ "clean": "rimraf dist",
53
+ "test": "jest",
54
+ "test:watch": "jest --watch",
55
+ "test:coverage": "jest --coverage",
56
+ "lint": "eslint src/**/*.ts",
57
+ "lint:fix": "eslint src/**/*.ts --fix",
58
+ "format": "prettier --write \"src/**/*.ts\"",
59
+ "prepublishOnly": "npm run build",
60
+ "docs": "typedoc"
61
+ },
62
+ "author": "FellouAI",
63
+ "license": "MIT",
64
+ "keywords": [
65
+ "fellou",
66
+ "eko"
67
+ ],
68
+ "publishConfig": {
69
+ "access": "public",
70
+ "registry": "https://registry.npmjs.org/"
71
+ },
72
+ "repository": {
73
+ "type": "git",
74
+ "url": "git+https://github.com/FellouAI/eko.git"
75
+ },
76
+ "dependencies": {
77
+ "@anthropic-ai/sdk": "^0.33.0",
78
+ "dotenv": "^16.0.0",
79
+ "openai": "^4.77.0",
80
+ "uuid": "^11.0.3",
81
+ "zod": "^3.22.4"
82
+ },
83
+ "devDependencies": {
84
+ "@rollup/plugin-commonjs": "^28.0.2",
85
+ "@rollup/plugin-node-resolve": "^16.0.0",
86
+ "@rollup/plugin-typescript": "^12.1.2",
87
+ "@types/chrome": "0.0.158",
88
+ "@types/jest": "^29.5.12",
89
+ "@types/node": "^20.11.24",
90
+ "@types/uuid": "^10.0.0",
91
+ "@typescript-eslint/eslint-plugin": "^7.1.0",
92
+ "@typescript-eslint/parser": "^7.1.0",
93
+ "eslint": "^8.57.0",
94
+ "jest": "^29.7.0",
95
+ "prettier": "^3.2.5",
96
+ "rimraf": "^5.0.5",
97
+ "rollup": "^4.28.1",
98
+ "rollup-plugin-copy": "^3.5.0",
99
+ "ts-jest": "^29.1.2",
100
+ "tslib": "^2.8.1",
101
+ "typedoc": "^0.27.6",
102
+ "typescript": "^5.3.3"
103
+ },
104
+ "engines": {
105
+ "node": ">=18.0.0"
106
+ },
107
+ "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
108
+ }