Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - akretion/akaidoo: CLI tool to help developping Odoo addons with AI
Nothing Special   »   [go: up one dir, main page]

Skip to content

akretion/akaidoo

Repository files navigation

Akaidoo Logo

Akaidoo - vibe code your Odoo!

PyPI version Python versions License

Navigate the Odoo & OCA Maze: Instantly Gather Relevant Modules Files.


Akaidoo extends the manifestoo CLI to list and copy all relevant source files (Python models, XML views, wizards, data, reports, and even OpenUpgrade migration scripts) from a specific Odoo addon and its entire dependency tree. It's designed to feed AI LLMs.

Akaidoo bridges the AI gap for Odoo by helping you:

  • 🤖 Boost AI Tools: Feed precisely the right context to AI LLMs. Works best with Gemini and its 1 million tokens context.
  • 📝 Streamline Editing: Open all pertinent files in your editor with a single command.
  • 🧩 Understand Scope: Quickly grasp the breadth of an addon's interactions.
  • 🔍 Perform searches: (akaidoo sale_stock -c ~/DEV/odoo16/odoo.cfg | xargs grep "def _compute_price_unit")
  • 🚀 Accelerate Migrations: Gather module code, dependencies, and their corresponding OpenUpgrade migration scripts in one go.

Key Features

  • Deep Dependency Traversal: Leverages manifestoo to accurately resolve all direct and transitive dependencies.
  • Intelligent File Collection: Gathers .py (models, root files) and .xml (views, wizards, reports) from the identified addons.
  • OpenUpgrade Script Integration: Optionally include all migration scripts from a specified OpenUpgrade repository for the target addon and its dependencies (-u, --openupgrade).
  • Flexible Addon Discovery:
    • Use Odoo configuration files (-c, --odoo-cfg).
    • Specify addon paths directly (--addons-path).
    • Auto-detect from an importable odoo package.
  • Granular Filtering:
    • Include/exclude specific file types (models, views, wizards, reports).
    • Focus only on models or views.
    • Exclude Odoo core addons (--exclude-core) or common framework addons (--exclude-framework).
    • Intelligently skip trivial __init__.py files.
  • Versatile Output Modes:
    • List Paths: Print file paths to stdout (default).
    • To Clipboard: Copy the content of all found files to your clipboard (-x, --clipboard), each prefixed with its relative path – perfect for AI prompts!
    • To File: Dump all file contents into a single output file (-o, --output-file).
    • To Editor: Directly open all found files in your preferred editor (-e, --edit).
  • Shrink files to save tokens:
    • -s to shrink the Python methods in dependencies
    • -S to shrink the Python methods everywhere

Installation

The recommended way to install Akaidoo is using pipx (to install it in an isolated environment):

pipx install akaidoo

Alternatively, using pip:

pip install --user akaidoo

For clipboard functionality (-x): Akaidoo uses pyperclip. You might need to install it and its dependencies:

pip install pyperclip
# On Linux, you may also need:
# sudo apt-get install xclip  # or xsel

Quick Start

Imagine you're working on the sale_timesheet addon in an Odoo project.

  1. Get all relevant file paths for sale_timesheet and its dependencies: (Using your project's Odoo configuration file)
akaidoo sale_timesheet -c ~/path/to/your/odoo.conf
  1. Copy all Python model code for sale_timesheet (without its deps -l) to your clipboard for an AI prompt:
akaidoo sale_timesheet -c odoo.conf --only-models -l -x
*(Each file's content in the clipboard will be prefixed with `# FILEPATH: path/to/file.py`)*
  1. Open all Python and XML view files for project and its direct dependencies (excluding core) in Neovim (use --editor-cmd or EDITOR env var to specify a different editor):
akaidoo project -c odoo.conf --exclude-core --no-include-wizards --no-include-reports -e
*(This uses the `nvim -p` command to open files in tabs. It's especially handy when using AI plugins like Avante.)*
  1. Get only the files from the mrp addon itself, ignoring its dependencies, and save their content to a file (useful if you outgrow the clipboard size):
akaidoo mrp -c odoo.conf --only-target-addon -o mrp_context.txt
  1. Gather sale_stock files, its dependencies, AND its OpenUpgrade migration scripts: (Assuming your OpenUpgrade clone is at ~/OpenUpgrade)
akaidoo sale_stock -c odoo.conf -u ~/OpenUpgrade -o sale_stock_migration_context.txt
This will collect all standard module files for `sale_stock` and its dependencies, plus all files from `~/OpenUpgrade/openupgrade_scripts/scripts/sale_stock/`, `~/OpenUpgrade/openupgrade_scripts/scripts/ADDON_DEPENDENCY_1/`, etc., into `sale_stock_migration_context.txt`. This is powerful for feeding comprehensive context to an AI for migration tasks.
  1. Gather the files from any source directory:
akaidoo some_directory
If some_directory is not an Odoo addon, then for convenience, akaidoo will select all the files from some_directory (recursively) and copy their content to the clipboard (-x) or to a file (-o) according to the options. It will skip hidden files and __pycache__.

Exploring All Options: For a full list of options:

akaidoo --help

Contributing

Contributions, bug reports, and feature requests are very welcome! Please feel free to open an issue or submit a pull request on the GitHub repository.

License

Akaidoo is licensed under the MIT License.

About

CLI tool to help developping Odoo addons with AI

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

0