├── .github └── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ ├── documentation_improvement.yml │ ├── feature_request.yml │ ├── proposal.yml │ ├── refactor_request.yml │ └── support_request.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── discard.png ├── example ├── extension │ ├── package.json │ ├── public │ │ ├── icon.ico │ │ ├── manifest.json │ │ ├── options.html │ │ └── sidebar.html │ ├── src │ │ ├── background │ │ │ ├── index.ts │ │ │ └── main.ts │ │ ├── content │ │ │ └── index.ts │ │ ├── options │ │ │ └── index.tsx │ │ └── sidebar │ │ │ └── index.tsx │ ├── tsconfig.json │ └── webpack.js ├── nodejs │ ├── .env.example │ ├── package.json │ ├── rollup.config.js │ ├── src │ │ ├── chat.ts │ │ └── index.ts │ └── tsconfig.json └── web │ ├── package.json │ ├── public │ ├── favicon.ico │ ├── index.html │ └── manifest.json │ └── src │ ├── App.tsx │ ├── index.css │ ├── index.tsx │ └── main.ts ├── package.json ├── packages ├── eko-core │ ├── .env.example │ ├── .gitignore │ ├── jest.config.js │ ├── package.json │ ├── publish.sh │ ├── rollup.config.js │ ├── src │ │ ├── agent │ │ │ ├── a2a.ts │ │ │ ├── base.ts │ │ │ ├── browser │ │ │ │ ├── browser_base.ts │ │ │ │ ├── browser_labels.ts │ │ │ │ ├── browser_screen.ts │ │ │ │ ├── build_dom_tree.ts │ │ │ │ └── index.ts │ │ │ ├── chat.ts │ │ │ ├── computer.ts │ │ │ ├── file.ts │ │ │ ├── index.ts │ │ │ ├── shell.ts │ │ │ └── timer.ts │ │ ├── common │ │ │ ├── log.ts │ │ │ ├── utils.ts │ │ │ └── xml.ts │ │ ├── config │ │ │ └── index.ts │ │ ├── core │ │ │ ├── chain.ts │ │ │ ├── context.ts │ │ │ ├── index.ts │ │ │ └── plan.ts │ │ ├── index.ts │ │ ├── llm │ │ │ └── index.ts │ │ ├── mcp │ │ │ └── index.ts │ │ ├── memory │ │ │ ├── index.ts │ │ │ └── snapshot.ts │ │ ├── prompt │ │ │ ├── agent.ts │ │ │ └── plan.ts │ │ ├── tools │ │ │ ├── foreach_task.ts │ │ │ ├── human_interact.ts │ │ │ ├── index.ts │ │ │ ├── task_node_status.ts │ │ │ ├── variable_storage.ts │ │ │ ├── watch_trigger.ts │ │ │ └── wrapper.ts │ │ └── types │ │ │ ├── core.types.ts │ │ │ ├── index.ts │ │ │ ├── llm.types.ts │ │ │ ├── mcp.types.ts │ │ │ └── tools.types.ts │ ├── test │ │ ├── core │ │ │ ├── agents.ts │ │ │ ├── eko.test.ts │ │ │ └── mcp.test.ts │ │ ├── demo.test.ts │ │ └── llm │ │ │ ├── claude.test.ts │ │ │ ├── llm.test.ts │ │ │ ├── mcp.test.ts │ │ │ ├── openai.test.ts │ │ │ ├── stream.test.ts │ │ │ ├── utils.test.ts │ │ │ └── xml.test.ts │ ├── tsconfig.json │ └── typedoc.json ├── eko-extension │ ├── .gitignore │ ├── package.json │ ├── publish.sh │ ├── rollup.config.js │ ├── src │ │ ├── browser.ts │ │ └── index.ts │ └── tsconfig.json ├── eko-nodejs │ ├── .gitignore │ ├── package.json │ ├── publish.sh │ ├── rollup.config.js │ ├── src │ │ ├── browser.ts │ │ ├── file.ts │ │ └── index.ts │ └── tsconfig.json └── eko-web │ ├── .gitignore │ ├── package.json │ ├── publish.sh │ ├── rollup.config.js │ ├── src │ ├── browser.ts │ └── index.ts │ └── tsconfig.json ├── pnpm-workspace.yaml └── src ├── common ├── summarize-workflow.ts └── tools │ └── human.ts ├── core └── eko.ts ├── extension ├── tools │ ├── browser.ts │ ├── browser_use.ts │ ├── export_file.ts │ ├── extract_content.ts │ ├── open_url.ts │ ├── tab_management.ts │ ├── tool_returns_screenshot.ts │ └── web_search.ts └── utils.ts ├── models └── action.ts ├── services └── llm │ ├── claude-provider.ts │ └── openai-provider.ts └── types ├── action.types.ts ├── eko.types.ts └── workflow.types.ts /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: "🐞 Bug Report" 2 | description: "Report an issue or bug in the project" 3 | title: "[BUG] Describe the problem" 4 | labels: ["bug"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Please follow this template to report bugs and help us address the issue efficiently. 10 | - type: input 11 | id: description 12 | attributes: 13 | label: "Description" 14 | description: "Briefly describe the issue" 15 | placeholder: "Write a short description of the problem here" 16 | validations: 17 | required: true 18 | - type: textarea 19 | id: steps_to_reproduce 20 | attributes: 21 | label: "Steps to Reproduce" 22 | description: "List the steps to reproduce the issue" 23 | placeholder: | 24 | 1. Go to... 25 | 2. Click on... 26 | 3. Observe the issue... 27 | validations: 28 | required: true 29 | - type: textarea 30 | id: expected_behavior 31 | attributes: 32 | label: "Expected Behavior" 33 | description: "What should happen instead of the issue" 34 | placeholder: "Describe the expected behavior here" 35 | - type: input 36 | id: environment 37 | attributes: 38 | label: "Environment" 39 | description: "Provide details about the environment where the issue occurred" 40 | placeholder: "OS, browser version, dependency versions, etc." 41 | - type: textarea 42 | id: additional_context 43 | attributes: 44 | label: "Additional Context" 45 | description: "Include any additional information that might help" 46 | placeholder: "For example: logs, screenshots, or screen recordings" 47 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | # Enable/Disable blank issues (if false, users must use a template) 2 | blank_issues_enabled: false 3 | 4 | # Contact links for users seeking additional support or discussions 5 | contact_links: 6 | - name: "Community Discussions" 7 | url: "https://join.slack.com/t/eko-ai/shared_invite/zt-2xhvkudv9-nHvD1g8Smp227sM51x_Meg" 8 | about: "For general questions, ideas, or open-ended discussions, please visit our community forum." 9 | - name: "Support Documentation" 10 | url: "https://eko.fellou.ai/docs/" 11 | about: "Find answers and guides in our official documentation." 12 | 13 | # Issue templates configuration 14 | issue_templates: 15 | - name: "🐞 Bug Report" 16 | description: "Report an issue or bug in the project" 17 | title: "[BUG] Describe the problem" 18 | labels: ["bug"] 19 | - name: "✨ Feature Request" 20 | description: "Propose a new feature or improvement" 21 | title: "[FEATURE] Describe your feature request" 22 | labels: ["enhancement"] 23 | - name: "📚 Documentation Improvement" 24 | description: "Suggest updates or improvements to the documentation" 25 | title: "[DOC] Suggest improvements" 26 | labels: ["documentation"] 27 | - name: "❓ Support Request" 28 | description: "Ask a question or request support for using the project" 29 | title: "[SUPPORT] Your question or issue" 30 | labels: ["support"] 31 | - name: "📝 Proposal" 32 | description: "Propose a significant change or enhancement to the project" 33 | title: "[PROPOSAL] Describe your proposal" 34 | labels: ["proposal", "enhancement"] 35 | - name: "🔄 Refactor Request" 36 | description: "Suggest code refactoring or quality improvements" 37 | title: "[REFACTOR] Describe the improvement" 38 | labels: ["refactor"] 39 | 40 | # Optional: Additional settings 41 | default_assignees: 42 | - "your-username" # Automatically assign issues to specific contributors 43 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation_improvement.yml: -------------------------------------------------------------------------------- 1 | name: "📚 Documentation Improvement" 2 | description: "Suggest updates, additions, or corrections to the documentation" 3 | title: "[DOC] Suggested Update" 4 | labels: ["documentation", "enhancement"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Use this template to suggest documentation improvements, report missing content, or provide feedback on clarity. 10 | - type: input 11 | id: section 12 | attributes: 13 | label: "Affected Documentation Section" 14 | description: "Specify the part of the documentation you are referencing." 15 | placeholder: "E.g., Installation Guide, API Reference" 16 | - type: textarea 17 | id: improvement_details 18 | attributes: 19 | label: "Details of the Improvement" 20 | description: "Clearly describe the proposed updates, additions, or corrections." 21 | placeholder: "Provide details about what you are suggesting, including specific examples or corrections." 22 | - type: textarea 23 | id: additional_context 24 | attributes: 25 | label: "Supporting Context" 26 | description: "Include any helpful references, examples, or screenshots to clarify your suggestion." 27 | placeholder: "E.g., links to related resources, screenshots, or detailed examples." 28 | - type: input 29 | id: priority 30 | attributes: 31 | label: "Priority" 32 | description: "How critical is this improvement?" 33 | placeholder: "Low, Medium, High" 34 | - type: checkboxes 35 | id: related_areas 36 | attributes: 37 | label: "Related Areas" 38 | description: "Select all areas that are impacted by this change." 39 | options: 40 | - label: "Code Examples" 41 | - label: "API Reference" 42 | - label: "User Guide" 43 | - label: "Other" 44 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: "✨ Feature Request" 2 | description: "Propose a new feature or improvement" 3 | title: "[FEATURE] Describe your feature request" 4 | labels: ["enhancement"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Please use this template to suggest new features or improvements. 10 | - type: input 11 | id: summary 12 | attributes: 13 | label: "Feature Summary" 14 | description: "Briefly describe the feature or improvement you’d like to see" 15 | placeholder: "Write a short summary of the feature here" 16 | validations: 17 | required: true 18 | - type: textarea 19 | id: use_case 20 | attributes: 21 | label: "Use Case" 22 | description: "Describe the target audience and scenarios for this feature" 23 | placeholder: "E.g., This feature will help users accomplish..." 24 | - type: textarea 25 | id: expected_outcome 26 | attributes: 27 | label: "Expected Outcome" 28 | description: "Describe the expected impact or result of this feature" 29 | placeholder: "Write the expected outcome here" 30 | - type: textarea 31 | id: additional_context 32 | attributes: 33 | label: "Additional Context" 34 | description: "Provide any additional details or references" 35 | placeholder: "E.g., inspiration, references, or sketches" 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/proposal.yml: -------------------------------------------------------------------------------- 1 | name: "📝 Proposal" 2 | description: "Propose a significant change or enhancement to the project" 3 | title: "[PROPOSAL] Describe your proposal" 4 | labels: ["proposal", "enhancement"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Use this template for significant proposals, such as new architecture or strategic features. 10 | - type: input 11 | id: summary 12 | attributes: 13 | label: "Proposal Summary" 14 | description: "Provide a concise summary of your proposal" 15 | placeholder: "Write a brief summary here" 16 | - type: textarea 17 | id: problem_statement 18 | attributes: 19 | label: "Problem Statement" 20 | description: "What problem does this proposal aim to solve?" 21 | placeholder: "Describe the problem here" 22 | - type: textarea 23 | id: proposed_solution 24 | attributes: 25 | label: "Proposed Solution" 26 | description: "Describe your proposed solution and why it's the best approach" 27 | placeholder: "Write your solution here" 28 | - type: textarea 29 | id: alternatives_considered 30 | attributes: 31 | label: "Alternatives Considered" 32 | description: "List other approaches you considered and why they were not chosen" 33 | placeholder: "Write alternative solutions here" 34 | - type: textarea 35 | id: additional_context 36 | attributes: 37 | label: "Additional Context" 38 | description: "Provide any other relevant information or resources" 39 | placeholder: "E.g., links, diagrams, or prior discussions" 40 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/refactor_request.yml: -------------------------------------------------------------------------------- 1 | name: "🔄 Refactor Request" 2 | description: "Suggest code refactoring or improvements" 3 | title: "[REFACTOR] Describe the improvement" 4 | labels: ["refactor"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Use this template to request code refactoring or suggest quality improvements. 10 | - type: input 11 | id: affected_code 12 | attributes: 13 | label: "Affected Code" 14 | description: "Which part of the codebase needs refactoring?" 15 | placeholder: "E.g., Module X, Function Y" 16 | - type: textarea 17 | id: refactor_reason 18 | attributes: 19 | label: "Reason for Refactoring" 20 | description: "Why does this part of the code need improvement?" 21 | placeholder: "Describe the reasons for refactoring here" 22 | - type: textarea 23 | id: suggestions 24 | attributes: 25 | label: "Suggested Improvements" 26 | description: "Provide suggestions or ideas for the refactor" 27 | placeholder: "Write your suggestions here" 28 | - type: textarea 29 | id: additional_context 30 | attributes: 31 | label: "Additional Context" 32 | description: "Include any supporting details or resources" 33 | placeholder: "E.g., code examples, performance issues, or relevant discussions" 34 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/support_request.yml: -------------------------------------------------------------------------------- 1 | name: "❓ Support Request" 2 | description: "Ask a question or request support for using the project" 3 | title: "[SUPPORT] Describe your question" 4 | labels: ["support"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | Use this template to describe your question or ask for help. 10 | - type: input 11 | id: topic 12 | attributes: 13 | label: "Topic" 14 | description: "Briefly describe your question or issue" 15 | placeholder: "E.g., How to configure X? What does Y mean?" 16 | - type: textarea 17 | id: details 18 | attributes: 19 | label: "Details" 20 | description: "Provide more details about your question or issue" 21 | placeholder: "Write a detailed description here" 22 | - type: textarea 23 | id: additional_context 24 | attributes: 25 | label: "Additional Context" 26 | description: "Include any supporting information or examples" 27 | placeholder: "E.g., code snippets, logs, or environment details" 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node modules folder 2 | node_modules/ 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | 11 | # Dependency directory 12 | jspm_packages/ 13 | 14 | # Build output 15 | dist/ 16 | build/ 17 | tmp/ 18 | 19 | # .env files (store environment variables) 20 | .env 21 | .env.local 22 | .env.*.local 23 | 24 | # IDE & Editor directories and files 25 | .idea/ 26 | .vscode/ 27 | *.sublime-workspace 28 | *.sublime-project 29 | 30 | # Operating system files 31 | .DS_Store 32 | Thumbs.db 33 | 34 | # npm package lock files (if you don't want them tracked by Git) 35 | package-lock.json 36 | pnpm-lock.yaml 37 | yarn.lock 38 | 39 | # Test coverage directory 40 | coverage/ 41 | 42 | # Coverage reports 43 | *.lcov 44 | 45 | # Temporary files 46 | *.swp 47 | *.swo 48 | *.bak 49 | 50 | # Miscellaneous files 51 | *.tgz 52 | *.zip 53 | 54 | # TypeScript build 55 | *.tsbuildinfo 56 | 57 | # Test generated files 58 | /test/fixtures/generated/ -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to Eko 2 | 3 | Thank you for your interest in contributing to Eko! This document provides guidelines and instructions for contributing to the project. 4 | 5 | ## Table of Contents 6 | 7 | - [Development Setup](#development-setup) 8 | - [Branching Strategy](#branching-strategy) 9 | - [Commit Message Guidelines](#commit-message-guidelines) 10 | - [Pull Request Process](#pull-request-process) 11 | 12 | ## Development Setup 13 | 14 | ### Prerequisites 15 | 16 | - Node.js (>= 18.0.0) 17 | - npm (latest stable version) 18 | - Git 19 | 20 | ### Setting Up the Development Environment 21 | 22 | 1. Fork the repository 23 | 2. Clone your fork: 24 | 25 | ```bash 26 | git clone https://github.com/your-username/eko.git 27 | cd eko 28 | ``` 29 | 30 | 3. Install dependencies: 31 | 32 | ```bash 33 | npm install 34 | ``` 35 | 36 | 4. Start the TypeScript compiler in watch mode: 37 | 38 | ```bash 39 | npm run dev 40 | ``` 41 | 42 | 5. Run tests: 43 | ```bash 44 | npm test 45 | ``` 46 | 47 | ### Development Commands 48 | 49 | - `npm run dev`: Start TypeScript compiler in watch mode 50 | - `npm test`: Run tests 51 | - `npm run test:watch`: Run tests in watch mode 52 | - `npm run build`: Build the project 53 | - `npm run lint`: Run linting 54 | - `npm run format`: Format code using Prettier 55 | 56 | ## Branching Strategy 57 | 58 | ### Branch Types 59 | 60 | - `main`: Production-ready code 61 | - `feature/*`: New features or enhancements (e.g., `feature/workflow-parser`) 62 | - `fix/*`: Bug fixes (e.g., `fix/parsing-error`) 63 | - `refactor/*`: Code refactoring without functionality changes 64 | - `docs/*`: Documentation changes 65 | - `test/*`: Adding or modifying tests 66 | - `chore/*`: Maintenance tasks 67 | - `build/*`: Changes affecting the build system 68 | 69 | ### Branch Naming Convention 70 | 71 | - Use lowercase letters and hyphens 72 | - Start with the type followed by a descriptive name 73 | - Examples: 74 | - `feature/json-parser` 75 | - `fix/validation-error` 76 | - `refactor/typescript-migration` 77 | 78 | ## Commit Message Guidelines 79 | 80 | ### Format 81 | 82 | ``` 83 | (): 84 | 85 | 86 | 87 |