From 4c01fa3f1813a2234d2bc77d84c66d42419347e3 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Sun, 13 Apr 2025 14:49:17 -0700
Subject: [PATCH 01/13] .
---
README.md | 92 +++++++++--------------------
pyproject.toml | 1 +
src/codegen/sdk/README.md | 119 ++++++++++++++++++++++++++++++++++++--
3 files changed, 143 insertions(+), 69 deletions(-)
diff --git a/README.md b/README.md
index f9e94756b..2e711f17b 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
@@ -22,72 +22,48 @@
-[Codegen](https://docs.codegen.com) is a python library for manipulating codebases.
+The Codegen SDK provides a programmatic interface to code agents provided by [Codegen](https://codegen.com).
```python
-from codegen import Codebase
-
-# Codegen builds a complete graph connecting
-# functions, classes, imports and their relationships
-codebase = Codebase("./")
-
-# Work with code without dealing with syntax trees or parsing
-for function in codebase.functions:
- # Comprehensive static analysis for references, dependencies, etc.
- if not function.usages:
- # Auto-handles references and imports to maintain correctness
- function.move_to_file("deprecated.py")
-```
-
-Write code that transforms code. Codegen combines the parsing power of [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) with the graph algorithms of [rustworkx](https://github.com/Qiskit/rustworkx) to enable scriptable, multi-language code manipulation at scale.
+from codegen.agents.agent import Agent
-## Installation and Usage
+# Initialize the Agent with your organization ID and API token
+agent = Agent(
+ org_id="YOUR_ORG_ID", # Find this at codegen.com/developer
+ token="YOUR_API_TOKEN", # Get this from codegen.com/developer
+ # base_url="https://codegen-sh-rest-api.modal.run", # Optional - defaults to production
+)
-We support
+# Run an agent with a prompt
+task = agent.run(prompt="Implement a new feature to sort users by last login.")
-- Running Codegen in Python 3.12 - 3.13 (recommended: Python 3.13+)
-- macOS and Linux
- - macOS is supported
- - Linux is supported on x86_64 and aarch64 with glibc 2.34+
- - Windows is supported via WSL. See [here](https://docs.codegen.com/building-with-codegen/codegen-with-wsl) for more details.
-- Python, Typescript, Javascript and React codebases
+# Check the initial status
+print(task.status)
-```
-# Install inside existing project
-uv pip install codegen
+# Refresh the task to get updated status (tasks can take time)
+task.refresh()
-# Install global CLI
-uv tool install codegen --python 3.13
+# Check the updated status
+print(task.status)
-# Create a codemod for a given repo
-cd path/to/repo
-codegen init
-codegen create test-function
-
-# Run the codemod
-codegen run test-function
-
-# Create an isolated venv with codegen => open jupyter
-codegen notebook
+# Once task is complete, you can access the result
+if task.status == "completed":
+ print(task.result) # Result often contains code, summaries, or links
```
-## Usage
+## Installation and Usage
-See [Getting Started](https://docs.codegen.com/introduction/getting-started) for a full tutorial.
+Install the SDK using pip or uv:
+```bash
+pip install codegen
+# or
+uv pip install codegen
```
-from codegen import Codebase
-```
-
-## Troubleshooting
-
-Having issues? Here are some common problems and their solutions:
-- **I'm hitting an UV error related to `[[ packages ]]`**: This means you're likely using an outdated version of UV. Try updating to the latest version with: `uv self update`.
-- **I'm hitting an error about `No module named 'codegen.sdk.extensions.utils'`**: The compiled cython extensions are out of sync. Update them with `uv sync --reinstall-package codegen`.
-- **I'm hitting a `RecursionError: maximum recursion depth exceeded` error while parsing my codebase**: If you are using python 3.12, try upgrading to 3.13. If you are already on 3.13, try upping the recursion limit with `sys.setrecursionlimit(10000)`.
+Get started at [codegen.com](https://codegen.com) and get your API token at [codegen.com/developer](https://codegen.com/developer).
-If you run into additional issues not listed here, please [join our slack community](https://community.codegen.com) and we'll help you out!
+You can interact with your AI engineer via API, or chat with it in Slack, Linear, Github, or on our website.
## Resources
@@ -96,18 +72,6 @@ If you run into additional issues not listed here, please [join our slack commun
- [Contributing](CONTRIBUTING.md)
- [Contact Us](https://codegen.com/contact)
-## Why Codegen?
-
-Software development is fundamentally programmatic. Refactoring a codebase, enforcing patterns, or analyzing control flow - these are all operations that can (and should) be expressed as programs themselves.
-
-We built Codegen backwards from real-world refactors performed on enterprise codebases. Instead of starting with theoretical abstractions, we focused on creating APIs that match how developers actually think about code changes:
-
-- **Natural mental model**: Write transforms that read like your thought process - "move this function", "rename this variable", "add this parameter". No more wrestling with ASTs or manual import management.
-
-- **Battle-tested on complex codebases**: Handle Python, TypeScript, and React codebases with millions of lines of code.
-
-- **Built for advanced intelligences**: As AI developers become more sophisticated, they need expressive yet precise tools to manipulate code. Codegen provides a programmatic interface that both humans and AI can use to express complex transformations through code itself.
-
## Contributing
Please see our [Contributing Guide](CONTRIBUTING.md) for instructions on how to set up the development environment and submit contributions.
diff --git a/pyproject.toml b/pyproject.toml
index 2b22a207b..26ede8797 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -72,6 +72,7 @@ dependencies = [
"datasets",
"colorlog>=6.9.0",
"codegen-sdk-pink>=0.1.0",
+ "dateutil",
]
license = { text = "Apache-2.0" }
diff --git a/src/codegen/sdk/README.md b/src/codegen/sdk/README.md
index 7aefbe289..f9e94756b 100644
--- a/src/codegen/sdk/README.md
+++ b/src/codegen/sdk/README.md
@@ -1,8 +1,117 @@
-# Codegen SDK
+
-A codegen module that contains the core Codebase graph parsing and manipulation logic.
+
+
+
+
+
-### Dependencies
+
+ Scriptable interface to a powerful, multi-lingual language server.
+
-- [codegen.git](https://github.com/codegen-sh/codegen-sdk/tree/develop/src/codegen/git)
-- [codegen.shared](https://github.com/codegen-sh/codegen-sdk/tree/develop/src/codegen/shared)
+
+
+[](https://pypi.org/project/codegen/)
+[](https://docs.codegen.com)
+[](https://community.codegen.com)
+[](https://github.com/codegen-sh/codegen-sdk/tree/develop?tab=Apache-2.0-1-ov-file)
+[](https://x.com/codegen)
+
+
+
+
+
+[Codegen](https://docs.codegen.com) is a python library for manipulating codebases.
+
+```python
+from codegen import Codebase
+
+# Codegen builds a complete graph connecting
+# functions, classes, imports and their relationships
+codebase = Codebase("./")
+
+# Work with code without dealing with syntax trees or parsing
+for function in codebase.functions:
+ # Comprehensive static analysis for references, dependencies, etc.
+ if not function.usages:
+ # Auto-handles references and imports to maintain correctness
+ function.move_to_file("deprecated.py")
+```
+
+Write code that transforms code. Codegen combines the parsing power of [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) with the graph algorithms of [rustworkx](https://github.com/Qiskit/rustworkx) to enable scriptable, multi-language code manipulation at scale.
+
+## Installation and Usage
+
+We support
+
+- Running Codegen in Python 3.12 - 3.13 (recommended: Python 3.13+)
+- macOS and Linux
+ - macOS is supported
+ - Linux is supported on x86_64 and aarch64 with glibc 2.34+
+ - Windows is supported via WSL. See [here](https://docs.codegen.com/building-with-codegen/codegen-with-wsl) for more details.
+- Python, Typescript, Javascript and React codebases
+
+```
+# Install inside existing project
+uv pip install codegen
+
+# Install global CLI
+uv tool install codegen --python 3.13
+
+# Create a codemod for a given repo
+cd path/to/repo
+codegen init
+codegen create test-function
+
+# Run the codemod
+codegen run test-function
+
+# Create an isolated venv with codegen => open jupyter
+codegen notebook
+```
+
+## Usage
+
+See [Getting Started](https://docs.codegen.com/introduction/getting-started) for a full tutorial.
+
+```
+from codegen import Codebase
+```
+
+## Troubleshooting
+
+Having issues? Here are some common problems and their solutions:
+
+- **I'm hitting an UV error related to `[[ packages ]]`**: This means you're likely using an outdated version of UV. Try updating to the latest version with: `uv self update`.
+- **I'm hitting an error about `No module named 'codegen.sdk.extensions.utils'`**: The compiled cython extensions are out of sync. Update them with `uv sync --reinstall-package codegen`.
+- **I'm hitting a `RecursionError: maximum recursion depth exceeded` error while parsing my codebase**: If you are using python 3.12, try upgrading to 3.13. If you are already on 3.13, try upping the recursion limit with `sys.setrecursionlimit(10000)`.
+
+If you run into additional issues not listed here, please [join our slack community](https://community.codegen.com) and we'll help you out!
+
+## Resources
+
+- [Docs](https://docs.codegen.com)
+- [Getting Started](https://docs.codegen.com/introduction/getting-started)
+- [Contributing](CONTRIBUTING.md)
+- [Contact Us](https://codegen.com/contact)
+
+## Why Codegen?
+
+Software development is fundamentally programmatic. Refactoring a codebase, enforcing patterns, or analyzing control flow - these are all operations that can (and should) be expressed as programs themselves.
+
+We built Codegen backwards from real-world refactors performed on enterprise codebases. Instead of starting with theoretical abstractions, we focused on creating APIs that match how developers actually think about code changes:
+
+- **Natural mental model**: Write transforms that read like your thought process - "move this function", "rename this variable", "add this parameter". No more wrestling with ASTs or manual import management.
+
+- **Battle-tested on complex codebases**: Handle Python, TypeScript, and React codebases with millions of lines of code.
+
+- **Built for advanced intelligences**: As AI developers become more sophisticated, they need expressive yet precise tools to manipulate code. Codegen provides a programmatic interface that both humans and AI can use to express complex transformations through code itself.
+
+## Contributing
+
+Please see our [Contributing Guide](CONTRIBUTING.md) for instructions on how to set up the development environment and submit contributions.
+
+## Enterprise
+
+For more information on enterprise engagements, please [contact us](https://codegen.com/contact) or [request a demo](https://codegen.com/request-demo).
From 482df280aec2e792ce8e001a86a475c4900e2417 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Sun, 13 Apr 2025 15:14:44 -0700
Subject: [PATCH 02/13] .
---
docs/graph-sitter/about.mdx | 72 +++
docs/graph-sitter/advanced-settings.mdx | 404 ++++++++++++
docs/graph-sitter/community.mdx | 48 ++
docs/graph-sitter/faq.mdx | 58 ++
docs/graph-sitter/getting-started.mdx | 342 ++++++++++
docs/graph-sitter/guiding-principles.mdx | 75 +++
docs/graph-sitter/how-it-works.mdx | 89 +++
docs/graph-sitter/ide-usage.mdx | 178 +++++
docs/graph-sitter/installation.mdx | 125 ++++
docs/graph-sitter/overview.mdx | 159 +++++
docs/graph-sitter/work-with-ai.mdx | 86 +++
docs/introduction/overview.mdx | 116 +---
docs/mint.json | 788 +++++++++++------------
13 files changed, 2062 insertions(+), 478 deletions(-)
create mode 100644 docs/graph-sitter/about.mdx
create mode 100644 docs/graph-sitter/advanced-settings.mdx
create mode 100644 docs/graph-sitter/community.mdx
create mode 100644 docs/graph-sitter/faq.mdx
create mode 100644 docs/graph-sitter/getting-started.mdx
create mode 100644 docs/graph-sitter/guiding-principles.mdx
create mode 100644 docs/graph-sitter/how-it-works.mdx
create mode 100644 docs/graph-sitter/ide-usage.mdx
create mode 100644 docs/graph-sitter/installation.mdx
create mode 100644 docs/graph-sitter/overview.mdx
create mode 100644 docs/graph-sitter/work-with-ai.mdx
diff --git a/docs/graph-sitter/about.mdx b/docs/graph-sitter/about.mdx
new file mode 100644
index 000000000..d7ffe80a1
--- /dev/null
+++ b/docs/graph-sitter/about.mdx
@@ -0,0 +1,72 @@
+---
+title: "Codegen, Inc."
+sidebarTitle: "About Us"
+icon: "building"
+iconType: "solid"
+---
+
+
+
+## Our Mission
+
+Our mission is to build fully-autonomous software engineering - the equivalent of self-driving cars for code.
+
+We believe the highest leverage path to autonomous development is enabling AI agents to "act via code."
+
+Just as self-driving cars need sophisticated sensors and controls to navigate the physical world, AI agents need powerful, precise tools to manipulate codebases. We're building that foundational layer: a programmatic interface that lets AI agents express complex code transformations through code itself.
+
+This approach creates a shared language that both humans and AI can use to:
+
+- Express powerful changes with precision and predictability
+- Build sophisticated tools from primitive operations
+- Create and maintain their own abstractions
+- Scale transformations across massive codebases
+
+## The Team
+
+Based in San Francisco, we're a team of engineers and researchers passionate about:
+
+- Making large-scale code changes more accessible
+- Building tools that work the way developers think
+- Creating the infrastructure for AI-powered code manipulation
+- Advancing the state of the art in program transformation
+
+## Open Source
+
+We believe in the power of open source software. Our core library, [codegen](https://github.com/codegen-sh/codegen-sdk), is freely available and open to contributions from the community.
+
+## Join Us
+
+
+
+ We're hiring! Join us in building the future of code transformation.
+
+
+ Connect with other developers and share your Codegen experiences.
+
+
+
+## Connect with Us
+
+
+
+ Follow us for updates and announcements
+
+
+ Connect with our team and stay updated on company news
+
+
+
+
+ Want to learn more about what we're building? Check out our [getting started
+ guide](/introduction/getting-started) or join our [community
+ Slack](https://community.codegen.com).
+
diff --git a/docs/graph-sitter/advanced-settings.mdx b/docs/graph-sitter/advanced-settings.mdx
new file mode 100644
index 000000000..08f0e5472
--- /dev/null
+++ b/docs/graph-sitter/advanced-settings.mdx
@@ -0,0 +1,404 @@
+---
+title: "Advanced Settings"
+sidebarTitle: "Advanced Settings"
+icon: "memory"
+iconType: "solid"
+---
+
+Codegen's [Codebase](/api-reference/core/Codebase) constructor accepts a `CodebaseConfig` object which is used to configure more advanced behaviors of the graph construction process.
+
+These flags are helpful for debugging problematic repos, optimizing Codegen's performance, or testing unreleased or experimental (potentially backwards-breaking) features.
+
+
+**These are considered experimental features and may change in the future!**
+
+As such, they may have little to no testing or documentation. Many of these flags may also be unsupported in the future!
+
+If you need help, please visit our [community](/introduction/community).
+
+
+
+These configuration options are defined in [src/codegen/configs/models/codebase.py](https://github.com/codegen-sh/codegen/blob/develop/src/codegen/configs/models/codebase.py).
+
+
+# Usage
+
+You can customize the behavior of the graph construction process when initializing a [Codebase](/api-reference/core/Codebase) by passing a `CodebaseConfig` object with the desired configuration flags.
+
+```python
+from codegen import Codebase
+from codegen.configs import CodebaseConfig
+
+# Initialize a Codebase with custom configuration
+codebase = Codebase(
+ "",
+ config=CodebaseConfig(
+ flag1=...,
+ flag2=...,
+ ...
+ )
+)
+```
+
+# Table of Contents
+
+- [debug](#flag-debug)
+- [verify-graph](#flag-verify-graph)
+- [track-graph](#flag-track-graph)
+- [method-usages](#flag-method-usages)
+- [sync-enabled](#flag-sync-enabled)
+- [full-range-index](#flag-full-range-index)
+- [ignore-process-errors](#flag-ignore-process-errors)
+- [disable-graph](#flag-disable-graph)
+- [disable-file-parse](#flag-disable-file-parse)
+- [exp-lazy-graph](#flag-exp-lazy-graph)
+- [generics](#flag-generics)
+- [import-resolution-paths](#flag-import-resolution-paths)
+- [import-resolution-overrides](#flag-import-resolution-overrides)
+- [py-resolve-syspath](#flag-py-resolve-syspath)
+- [ts-dependency-manager](#flag-ts-dependency-manager)
+- [ts-language-engine](#flag-ts-language-engine)
+- [v8-ts-engine](#flag-v8-ts-engine)
+- [unpacking-assignment-partial-removal](#flag-unpacking-assignment-partial-removal)
+
+# Configuration Flags
+
+## Flag: `debug`
+> **Default: `False`**
+
+Enables verbose logging for debugging purposes. In its current form, it enables:
+- Verbose logging when adding nodes to the graph
+- Verbose logging during initial file parsing
+- Additional assertions on graph creation
+- Additional (costly) debug metrics on codebase construction
+- etc.
+
+
+This flag may be very noisy and significantly impact performance. It is generally not recommended to use.
+
+
+## Flag: `verify_graph`
+> **Default: `False`**
+
+Adds assertions for graph state during reset resync. Used to test and debug graph desyncs after a codebase reset.
+
+Runs `post_reset_validation` after a reset resync.
+
+
+This is an internal debug flag.
+
+
+## Flag: `track_graph`
+> **Default: `False`**
+
+Keeps a copy of the original graph before a resync. Used in conjunction with `verify_graph` to test and debug graph desyncs.
+
+Original graph is saved as `ctx.old_graph`.
+
+
+This is an internal debug flag.
+
+
+## Flag: `method_usages`
+> **Default: `True`**
+
+Enables and disables resolving method usages.
+
+**Example Codebase:**
+```python
+class Foo:
+ def bar():
+ ...
+
+obj = Foo()
+obj.bar() # Method Usage
+```
+
+**Codemod with `method_usages` on:**
+```python
+bar_func = codebase.get_class("Foo").get_method("bar")
+len(bar_func.usages) # 1
+bar_func.usages # [obj.bar()]
+```
+
+**Codemod with `method_usages` off:**
+```python
+bar_func = codebase.get_class("Foo").get_method("bar")
+len(bar_func.usages) # 0
+bar_func.usages # []
+```
+
+Method usage resolution could be disabled for a marginal performance boost. However, it is generally recommended to leave it enabled.
+
+## Flag: `sync_enabled`
+> **Default: `False`**
+
+Enables or disables graph sync during `codebase.commit`.
+
+
+Implementation-specific details on sync graph can be found [here](https://github.com/codegen-sh/codegen/blob/develop/architecture/6.%20incremental-computation/C.%20Graph%20Recomputation.md).
+
+
+This section won't go into the specific details of sync graph, but the general idea is that enabling sync graph will update the Codebase object to whatever new changes were made.
+
+**Example with `sync_enabled` on:**
+```python
+file = codebase.get_file(...)
+file.insert_after("foobar = 1")
+codebase.commit()
+
+foobar = codebase.get_symbol("foobar")
+assert foobar # foobar is available after commit / graph sync
+```
+
+**Example with `sync_enabled` disabled:**
+```python
+file = codebase.get_file(...)
+file.insert_after("foobar = 1")
+
+foobar = codebase.get_symbol("foobar", optional=True)
+assert not foobar # foobar is not available after commit
+```
+
+
+Enabling sync graph will have a performance impact on codebase commit, but will also unlock a bunch of operations that were previously not possible.
+
+
+## Flag: `full_range_index`
+> **Default: `False`**
+
+By default, Codebase maintains an internal range-to-node index for fast lookups. (i.e. `bytes 120 to 130 maps to node X`).
+For optimization purposes, this only applies to nodes defined and handled by `parser.py`.
+
+Enabling `full_range_index` will create an additional index that maps **all** tree-sitter ranges to nodes.
+This can be useful for debugging or when you need to build any applications that require a full range-to-node index (i.e. a codebase tree lookup).
+
+
+This flag **significantly** increases memory usage!
+
+
+## Flag: `ignore_process_errors`
+> **Default: `True`**
+
+Controls whether to ignore errors that occur during external process execution (such as dependency manager or language engine).
+
+Disabling `ignore_process_errors` would make Codegen fail on errors that would otherwise be logged then ignored.
+
+## Flag: `disable_graph`
+> **Default: `False`**
+
+Disables the graph construction process. Any operations that require the graph will no longer work. (In other words, this turns off import resolution and usage/dependency resolution)
+
+Functions that operate purely on AST such as getting and editing parameters or modifying function and class definitions will still work.
+
+
+For codemods that do not require the graph (aka only AST/Syntax-level changes), **disabling graph parse could yield a 30%-40% decrease in parse time and memory usage**!
+
+
+## Flag: `disable_file_parse`
+> **Default: `False`**
+
+Disables **ALL** parsing, including file and graph parsing. This essentially treats all codebases as the "UNSUPPORTED" language mode.
+
+Nearly all functions except for editing primitives like `codebase.get_file` and `file.edit` will no longer work.
+
+
+This flag is useful for any usages of Codegen that do **NOT** require any AST/CST/Graph parsing. (i.e. using Codegen purely as a file editing harness)
+
+If this is your use case, this **could decrease parse and memory usage by 95%.**
+
+
+## Flag: `exp_lazy_graph`
+> **Default: `False`**
+
+This experimental flag pushes the graph creation back until the graph is needed. This is an experimental feature and may have some unintended consequences.
+
+**Example Codemod:**
+```python
+from codegen import Codebase
+from codegen.configs import CodebaseConfig
+
+# Enable lazy graph parsing
+codebase = Codebase("", config=CodebaseConfig(exp_lazy_graph=True))
+
+# The codebase object will be created immediately with no parsing done
+# These all do not require graph parsing
+codebase.files
+codebase.directories
+codebase.get_file("...")
+
+# These do require graph parsing, and will create the graph only if called
+codebase.get_function("...")
+codebase.get_class("...")
+codebase.imports
+```
+
+
+This may have a very slight performance boost. Use at your own risk!
+
+
+## Flag: `generics`
+> **Default: `True`**
+
+Enables and disables generic type resolution.
+
+**Example Codebase:**
+```python
+class Point:
+ def scale(cls, n: int):
+ pass
+
+class List[T]():
+ def pop(self) -> T:
+ ...
+
+l: List[Point] = []
+l.pop().scale(1) # Generic Usage
+```
+
+**Codemod with `generics` on:**
+```python
+bar_func = codebase.get_class("Point").get_method("scale")
+len(bar_func.usages) # 1
+bar_func.usages # [l.pop().scale(1)]
+```
+
+**Codemod with `generics` off:**
+```python
+bar_func = codebase.get_class("Point").get_method("scale")
+len(bar_func.usages) # 0
+bar_func.usages # []
+```
+
+
+Generic resolution is still largely WIP and experimental, and may not work in all cases. In some rare circumstances, disabling generics may result in a significant performance boost.
+
+
+## Flag: `import_resolution_paths`
+> **Default: `[]`**
+
+Controls alternative paths to resolve imports from.
+
+**Example Codebase:**
+```python
+# a/b/c/src.py
+def update():
+ pass
+
+# consumer.py
+from c import src as operations
+
+operations.update()
+```
+
+**Codemod:**
+```python
+codebase.ctx.config.import_resolution_paths = ["a/b"]
+```
+
+## Flag: `import_resolution_overrides`
+> **Default: `{}`**
+
+Controls import path overrides during import resolution.
+
+**Example**
+`from a.b.c import d` with the override `a/b` -> `foo/bar` will internally resolve the import as `from foo.bar.c import d`.
+
+## Flag: `py_resolve_syspath`
+> **Default: `False`**
+
+Enables and disables resolution of imports from `sys.path`.
+
+
+For this to properly work, you must also set `allow_external` to `True`.
+
+
+## Flag: `allow_external`
+> **Default: `False`**
+
+Enables resolving imports, files, modules, and directories from outside of the repo path.
+
+
+Turning this flag off may allow for bad actors to access files outside of the repo path! Use with caution!
+
+
+## Flag: `ts_dependency_manager`
+> **Default: `False`**
+
+
+**This is an internal flag used for Codegen Cloud and should not be used externally!**
+
+This flag **WILL** nuke any existing `node_modules` folder!
+
+
+
+This flag also assumes many constants for Codegen Cloud. Very likely this will not work if run locally.
+
+Instead, just install `node_modules` as normal (either through `npm`, `pnpm`, or `yarn`) and skip this setting!
+
+
+Enables Codegen's internal dependency installer for TypeScript. This will modify `package.json` and install the bare minimum set of installable dependencies.
+
+
+More documentation on TypeScript dependency manager can be found [here](https://github.com/codegen-sh/codegen/blob/develop/architecture/external/dependency-manager.md)
+
+
+## Flag: `ts_language_engine`
+> **Default: `False`**
+
+
+This feature was built primarily with Codegen Cloud in mind. As such, this assumes a valid NodeJS and TypeScript environment.
+
+
+Enables using the TypeScript compiler to extract information from the codebase. Enables commands such as `inferred_return_type`.
+
+
+This will increase memory usage and parsing time. Larger repos may even hit resource constraints with the bundled TypeScript compiler integration.
+
+
+## Flag: `v8_ts_engine`
+> **Default: `False`**
+
+
+This feature flag requires `ts_language_engine` to be enabled as well.
+
+
+Enables using the **V8-based TypeScript compiler** to extract information from the codebase. Enables commands such as `inferred_return_type`.
+
+The V8 implementation (as opposed to the default external-process based implementation) is less stable, but provides the entire TypeScript API to be used from within Codegen.
+
+
+This will increase memory usage and parsing time. Larger repos may even hit resource constraints with the V8-based TypeScript compiler integration.
+
+
+## Flag: `unpacking_assignment_partial_removal`
+> **Default: `False`**
+
+Enables smarter removal of unpacking assignments.
+
+**Example Codebase:**
+```python
+a, b, c = (1, 2, 3)
+```
+
+**Codemod with `unpacking_assignment_partial_removal` on:**
+```python
+file = codebase.get_file(...)
+b = file.get_symbol("b")
+b.remove()
+codebase.commit()
+
+file.symbols # [a, c]
+file.source # "a, c = (1, 3)"
+```
+
+**Codemod with `unpacking_assignment_partial_removal` off:**
+```python
+file = codebase.get_file(...)
+b = file.get_symbol("b")
+b.remove()
+codebase.commit()
+
+file.symbols # []
+file.source # ""
+```
diff --git a/docs/graph-sitter/community.mdx b/docs/graph-sitter/community.mdx
new file mode 100644
index 000000000..ed02a4276
--- /dev/null
+++ b/docs/graph-sitter/community.mdx
@@ -0,0 +1,48 @@
+---
+title: "Community & Contributing"
+sidebarTitle: "Community"
+icon: "people-group"
+iconType: "solid"
+---
+
+import {
+ COMMUNITY_SLACK_URL,
+ CODEGEN_SDK_GITHUB_URL,
+} from "/snippets/links.mdx";
+
+Join the growing Codegen community! We're excited to have you be part of our journey to make codebase manipulation and transformation more accessible.
+
+
+
+ Connect with the community, get help, and share your Codegen projects in our
+ active Slack workspace.
+
+
+ Star us on GitHub, report issues, submit PRs, and contribute to the project.
+
+
+ Follow us for updates, tips, and community highlights.
+
+
+ Learn how to use Codegen effectively with our comprehensive guides.
+
+
+
+
+ Please help us improve this library and documentation by submitting a PR!
+
+
+## Contributing
+
+We welcome contributions of all kinds! Whether you're fixing a typo in documentation, reporting a bug, or implementing a new feature, we appreciate your help in making Codegen better.
+
+Check out our [Contributing Guide](https://github.com/codegen-sh/codegen-sdk/blob/develop/CONTRIBUTING.md) on GitHub to learn how to:
+
+- Set up your development environment
+- Submit pull requests
+- Report issues
+- Contribute to documentation
diff --git a/docs/graph-sitter/faq.mdx b/docs/graph-sitter/faq.mdx
new file mode 100644
index 000000000..d7f3abfba
--- /dev/null
+++ b/docs/graph-sitter/faq.mdx
@@ -0,0 +1,58 @@
+---
+title: "Frequently Asked Questions"
+sidebarTitle: "FAQ"
+icon: "square-question"
+iconType: "solid"
+---
+
+
+
+ Codegen currently parses two languages:
+ - [Python](/api-reference/python)
+ - [TypeScript](/api-reference/typescript)
+
+ We're actively working on expanding language support based on community needs.
+
+ Learn more about how Codegen handles language specifics in the [Language
+ Support](/building-with-codegen/language-support) guide.
+
+
+ Interested in adding support for your language? [Let us know](https://x.com/codegen) or [contribute](/introduction/community)!
+
+
+
+
+ Pretty much! Codegen is roughly on par with `mypy` and `tsc`. There are always edge cases in static analysis that are provably impossible to get (for example doing `eval()` on a string), but all of Codegen's APIs are intended to be exact unless otherwise specified. Please reach out if you find an edge case and we will do our best to patch it.
+
+
+ Yes! Codegen was developed on multmillion-line Python and Typescript codebases
+ and includes optimizations for handling large-scale transformations.
+
+ For enterprise support, please reach out to [team@codegen.com](mailto:team@codegen.com)
+
+
+
+ Yes - [by design](/introduction/guiding-principles#python-first-composability).
+
+ Codegen works like any other python package. It works alongside your IDE, version control system, and other development tools.
+
+
+ Start by trying out Codegen, joining our [Slack community](https://community.codegen.com), and looking for
+ issues labeled "good first issue" on [GitHub](https://github.com/codegen-sh/codegen-sdk). We welcome contributions to
+ documentation, examples, and code improvements.
+
+
+ Yes, Codegen is [open source](https://github.com/codegen-sh/codegen-sdk) and free to use under the [Apache 2.0
+ license](https://github.com/codegen-sh/codegen-sdk?tab=Apache-2.0-1-ov-file).
+ You can use it for both personal and commercial projects.
+
+
+ The best places to get help are:
+ 1. Our community [Slack channel](https://community.codegen.com)
+ 2. [GitHub issues](https://github.com/codegen-sh/codegen-sdk) for bug reports
+ 3. Reach out to us on [Twitter](https://x.com/codegen)
+
+
diff --git a/docs/graph-sitter/getting-started.mdx b/docs/graph-sitter/getting-started.mdx
new file mode 100644
index 000000000..ad9e2c5f2
--- /dev/null
+++ b/docs/graph-sitter/getting-started.mdx
@@ -0,0 +1,342 @@
+---
+title: "Getting Started"
+sidebarTitle: "Getting Started"
+icon: "bolt"
+iconType: "solid"
+---
+
+A quick tour of Codegen in a Jupyter notebook.
+
+## Installation
+
+Install [codegen](https://pypi.org/project/codegen/) on Pypi via [uv](https://github.com/astral-sh/uv):
+
+```bash
+uv tool install codegen
+```
+
+## Quick Start with Jupyter
+
+The [codegen notebook](/cli/notebook) command creates a virtual environment and opens a Jupyter notebook for quick prototyping. This is often the fastest way to get up and running.
+
+```bash
+# Launch Jupyter with a demo notebook
+codegen notebook --demo
+```
+
+
+
+ The `notebook --demo` comes pre-configured to load [FastAPI](https://github.com/fastapi/fastapi)'s codebase, so you can start
+ exploring right away!
+
+
+
+ Prefer working in your IDE? See [IDE Usage](/introduction/ide-usage)
+
+
+## Initializing a Codebase
+
+Instantiating a [Codebase](/api-reference/core/Codebase) will automatically parse a codebase and make it available for manipulation.
+
+```python
+from codegen import Codebase
+
+# Clone + parse fastapi/fastapi
+codebase = Codebase.from_repo('fastapi/fastapi')
+
+# Or, parse a local repository
+codebase = Codebase("path/to/git/repo")
+```
+
+
+ This will automatically infer the programming language of the codebase and
+ parse all files in the codebase. Learn more about [parsing codebases here](/building-with-codegen/parsing-codebases)
+
+
+## Exploring Your Codebase
+
+Let's explore the codebase we just initialized.
+
+Here are some common patterns for code navigation in Codegen:
+
+- Iterate over all [Functions](/api-reference/core/Function) with [Codebase.functions](/api-reference/core/Codebase#functions)
+- View class inheritance with [Class.superclasses](/api-reference/core/Class#superclasses)
+- View function usages with [Function.usages](/api-reference/core/Function#usages)
+- View inheritance hierarchies with [inheritance APIs](https://docs.codegen.com/building-with-codegen/class-api#working-with-inheritance)
+- Identify recursive functions by looking at [FunctionCalls](https://docs.codegen.com/building-with-codegen/function-calls-and-callsites)
+- View function call-sites with [Function.call_sites](/api-reference/core/Function#call-sites)
+
+```python
+# Print overall stats
+print("π Codebase Analysis")
+print("=" * 50)
+print(f"π Total Classes: {len(codebase.classes)}")
+print(f"β‘ Total Functions: {len(codebase.functions)}")
+print(f"π Total Imports: {len(codebase.imports)}")
+
+# Find class with most inheritance
+if codebase.classes:
+ deepest_class = max(codebase.classes, key=lambda x: len(x.superclasses))
+ print(f"\nπ³ Class with most inheritance: {deepest_class.name}")
+ print(f" π Chain Depth: {len(deepest_class.superclasses)}")
+ print(f" βοΈ Chain: {' -> '.join(s.name for s in deepest_class.superclasses)}")
+
+# Find first 5 recursive functions
+recursive = [f for f in codebase.functions
+ if any(call.name == f.name for call in f.function_calls)][:5]
+if recursive:
+ print(f"\nπ Recursive functions:")
+ for func in recursive:
+ print(f" - {func.name}")
+```
+
+## Analyzing Tests
+
+Let's specifically drill into large test files, which can be cumbersome to manage.
+
+```python
+from collections import Counter
+
+# Filter to all test functions and classes
+test_functions = [x for x in codebase.functions if x.name.startswith('test_')]
+test_classes = [x for x in codebase.classes if x.name.startswith('Test')]
+
+print("π§ͺ Test Analysis")
+print("=" * 50)
+print(f"π Total Test Functions: {len(test_functions)}")
+print(f"π¬ Total Test Classes: {len(test_classes)}")
+print(f"π Tests per File: {len(test_functions) / len(codebase.files):.1f}")
+
+# Find files with the most tests
+print("\nπ Top Test Files by Class Count")
+print("-" * 50)
+file_test_counts = Counter([x.file for x in test_classes])
+for file, num_tests in file_test_counts.most_common()[:5]:
+ print(f"π {num_tests} test classes: {file.filepath}")
+ print(f" π File Length: {len(file.source)} lines")
+ print(f" π‘ Functions: {len(file.functions)}")
+```
+
+## Splitting Up Large Test Files
+
+Lets split up the largest test files into separate modules for better organization.
+
+This uses Codegen's [codebase.move_to_file(...)](/building-with-codegen/moving-symbols), which will:
+- update all imports
+- (optionally) move dependencies
+- do so very fast β‘οΈ
+
+While maintaining correctness.
+
+```python
+filename = 'tests/test_path.py'
+print(f"π¦ Splitting Test File: {filename}")
+print("=" * 50)
+
+# Grab a file
+file = codebase.get_file(filename)
+base_name = filename.replace('.py', '')
+
+# Group tests by subpath
+test_groups = {}
+for test_function in file.functions:
+ if test_function.name.startswith('test_'):
+ test_subpath = '_'.join(test_function.name.split('_')[:3])
+ if test_subpath not in test_groups:
+ test_groups[test_subpath] = []
+ test_groups[test_subpath].append(test_function)
+
+# Print and process each group
+for subpath, tests in test_groups.items():
+ print(f"\\n{subpath}/")
+ new_filename = f"{base_name}/{subpath}.py"
+
+ # Create file if it doesn't exist
+ if not codebase.has_file(new_filename):
+ new_file = codebase.create_file(new_filename)
+ file = codebase.get_file(new_filename)
+
+ # Move each test in the group
+ for test_function in tests:
+ print(f" - {test_function.name}")
+ test_function.move_to_file(new_file, strategy="add_back_edge")
+
+# Commit changes to disk
+codebase.commit()
+```
+
+
+ In order to commit changes to your filesystem, you must call
+ [codebase.commit()](/api-reference/core/Codebase#commit). Learn more about
+ [commit() and reset()](/building-with-codegen/commit-and-reset).
+
+
+### Finding Specific Content
+
+Once you have a general sense of your codebase, you can filter down to exactly what you're looking for. Codegen's graph structure makes it straightforward and performant to find and traverse specific code elements:
+
+```python
+# Grab specific content by name
+my_resource = codebase.get_symbol('TestResource')
+
+# Find classes that inherit from a specific base
+resource_classes = [
+ cls for cls in codebase.classes
+ if cls.is_subclass_of('Resource')
+]
+
+# Find functions with specific decorators
+test_functions = [
+ f for f in codebase.functions
+ if any('pytest' in d.source for d in f.decorators)
+]
+
+# Find files matching certain patterns
+test_files = [
+ f for f in codebase.files
+ if f.name.startswith('test_')
+]
+```
+
+## Safe Code Transformations
+
+Codegen guarantees that code transformations maintain correctness. It automatically handles updating imports, references, and dependencies. Here are some common transformations:
+
+```python
+# Move all Enum classes to a dedicated file
+for cls in codebase.classes:
+ if cls.is_subclass_of('Enum'):
+ # Codegen automatically:
+ # - Updates all imports that reference this class
+ # - Maintains the class's dependencies
+ # - Preserves comments and decorators
+ # - Generally performs this in a sane manner
+ cls.move_to_file(f'enums.py')
+
+# Rename a function and all its usages
+old_function = codebase.get_function('process_data')
+old_function.rename('process_resource') # Updates all references automatically
+
+# Change a function's signature
+handler = codebase.get_function('event_handler')
+handler.get_parameter('e').rename('event') # Automatically updates all call-sites
+handler.add_parameter('timeout: int = 30') # Handles formatting and edge cases
+handler.add_return_type('Response | None')
+
+# Perform surgery on call-sites
+for fcall in handler.call_sites:
+ arg = fcall.get_arg_by_parameter_name('env')
+ # f(..., env={ data: x }) => f(..., env={ data: x or None })
+ if isinstance(arg.value, Collection):
+ data_key = arg.value.get('data')
+ data_key.value.edit(f'{data_key.value} or None')
+```
+
+
+ When moving symbols, Codegen will automatically update all imports and
+ references. See [Moving Symbols](/building-with-codegen/moving-symbols) to
+ learn more.
+
+
+## Leveraging Graph Relations
+
+Codegen's graph structure makes it easy to analyze relationships between code elements across files:
+
+```python
+# Find dead code
+for func in codebase.functions:
+ if len(func.usages) == 0:
+ print(f'ποΈ Dead code: {func.name}')
+ func.remove()
+
+# Analyze import relationships
+file = codebase.get_file('api/endpoints.py')
+print("\nFiles that import endpoints.py:")
+for import_stmt in file.inbound_imports:
+ print(f" {import_stmt.file.path}")
+
+print("\nFiles that endpoints.py imports:")
+for import_stmt in file.imports:
+ if import_stmt.resolved_symbol:
+ print(f" {import_stmt.resolved_symbol.file.path}")
+
+# Explore class hierarchies
+base_class = codebase.get_class('BaseModel')
+if base_class:
+ print(f"\nClasses that inherit from {base_class.name}:")
+ for subclass in base_class.subclasses:
+ print(f" {subclass.name}")
+ # We can go deeper in the inheritance tree
+ for sub_subclass in subclass.subclasses:
+ print(f" ββ {sub_subclass.name}")
+```
+
+
+ Learn more about [dependencies and
+ references](/building-with-codegen/dependencies-and-usages) or [imports](/building-with-codegen/imports) and [exports](/building-with-codegen/exports).
+
+
+## Advanced Settings
+
+Codegen also supports a number of advanced settings that can be used to customize the behavior of the graph construction process.
+
+These flags are helpful for debugging problematic repos, optimizing Codegenβs performance, or testing unreleased or experimental (potentially backwards-breaking) features.
+
+```python
+from codegen import Codebase
+from codegen.configs import CodebaseConfig
+
+# Initialize a Codebase with custom configuration
+codebase = Codebase(
+ "path/to/git/repo"",
+ config=CodebaseConfig(
+ verify_graph=True,
+ method_usages=False,
+ sync_enabled=True,
+ generics=False,
+ import_resolution_overrides={
+ "old_module": "new_module"
+ },
+ ts_language_engine=True,
+ v8_ts_engine=True
+ )
+)
+```
+
+To learn more about available settings, see the [Advanced Settings](/introduction/advanced-settings) page.
+
+
+These are considered experimental and unstable features that may be removed or changed in the future.
+
+
+## What's Next?
+
+
+
+ Follow step-by-step tutorials for common code transformation tasks like
+ modernizing React codebases or migrating APIs.
+
+
+ Understand key concepts like working with files, functions, imports, and the
+ call graph to effectively manipulate code.
+
+
+ Iterate locally with your favorite IDE, work with a debugger and build sophisticated codemods
+
+
+ Learn how to use Codegen with Cursor, Devin, Windsurf, and more.
+
+
+
diff --git a/docs/graph-sitter/guiding-principles.mdx b/docs/graph-sitter/guiding-principles.mdx
new file mode 100644
index 000000000..53201e5c1
--- /dev/null
+++ b/docs/graph-sitter/guiding-principles.mdx
@@ -0,0 +1,75 @@
+---
+title: "Guiding Principles"
+sidebarTitle: "Principles"
+icon: "compass"
+iconType: "solid"
+---
+
+Codegen was developed by working backwards from real-world, large-scale codebase migrations. Instead of starting with abstract syntax trees and parser theory, we started with the question: "How do developers actually think about code changes?"
+
+This practical origin led to four core principles that shape Codegen's design:
+
+## Intuitive APIs
+
+Write code that reads like natural language, without worrying about abstract syntax trees or parser internals. Codegen provides high-level APIs that map directly to the transformations developers want to perform:
+
+```python
+# Methods that read like English
+function.rename("new_name") # Not ast.update_node(function_node, "name", "new_name")
+function.move_to_file("new_file.py") # Not ast.relocate_node(function_node, "new_file.py")
+
+# Clean, readable properties
+if function.is_async: # Not ast.get_node_attribute(function_node, "async")
+ print(function.name) # Not ast.get_node_name(function_node)
+
+# Natural iteration patterns
+for usage in function.usages: # Not ast.find_references(function_node)
+ print(f"Used in {usage.file.name}")
+```
+
+## No Sharp Edges
+
+Focus on your high-level intent while Codegen handles the intricate details.
+
+Codegen operations handle the edge cases - it should be hard to break lint.
+
+```python
+# Moving a function? Codegen handles:
+function.move_to_file("new_file.py")
+# β Updating all import statements
+# β Preserving dependencies
+# β Maintaining references
+# β Fixing relative imports
+# β Resolving naming conflicts
+
+# Renaming a symbol? Codegen manages:
+class_def.rename("NewName")
+# β Updating all usages
+# β Handling string references
+# β Preserving docstrings
+# β Maintaining inheritance
+```
+
+## Performance through Pre-Computation
+
+Codegen frontloads as much as possible to enable fast, efficient transformations.
+
+It is built with the insight that each codebase only needs to be parsed once per commit.
+
+
+ Learn more about parsing the codebase graph in the [How it
+ Works](/introduction/how-it-works) guide.
+
+
+## Python-First Composability
+
+Codegen embraces Python's strength as a "glue language" - its ability to seamlessly integrate different tools and APIs. This makes it natural to compose Codegen with your existing toolchain:
+
+- Build complex transforms by combining simpler operations
+- Integrate Codegen with your existing tools (linters, type checkers, test frameworks, AI tools)
+
+
+ Python's rich ecosystem makes it ideal for code manipulation tasks. Codegen is
+ designed to be one tool in your toolbox, not a replacement for your entire
+ workflow.
+
diff --git a/docs/graph-sitter/how-it-works.mdx b/docs/graph-sitter/how-it-works.mdx
new file mode 100644
index 000000000..8777a5be4
--- /dev/null
+++ b/docs/graph-sitter/how-it-works.mdx
@@ -0,0 +1,89 @@
+---
+title: "Under the Hood"
+sidebarTitle: "How it Works"
+icon: "gear"
+iconType: "solid"
+subtitle: "How Codegen's codebase graph works"
+---
+
+Codegen performs advanced static analysis to build a rich graph representation of your codebase. This pre-computation step analyzes dependencies, references, types, and control flow to enable fast and reliable code manipulation operations.
+
+
+ Codegen is built on top of
+ [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) and
+ [rustworkx](https://github.com/Qiskit/rustworkx) and has implemented most
+ language server features from scratch.
+
+
+ Codegen is open source. Check out the [source
+ code](https://github.com/codegen-sh/codegen-sdk) to learn more!
+
+
+## The Codebase Graph
+
+At the heart of Codegen is a comprehensive graph representation of your code. When you initialize a [Codebase](/api-reference/core/Codebase), it performs static analysis to construct a rich graph structure connecting code elements:
+
+```python
+# Initialize and analyze the codebase
+from codegen import Codebase
+codebase = Codebase("./")
+
+# Access pre-computed relationships
+function = codebase.get_symbol("process_data")
+print(f"Dependencies: {function.dependencies}") # Instant lookup
+print(f"Usages: {function.usages}") # No parsing needed
+```
+
+### Building the Graph
+
+Codegen's graph construction happens in two stages:
+
+1. **AST Parsing**: We use [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) as our foundation for parsing code into Abstract Syntax Trees. Tree-sitter provides fast, reliable parsing across multiple languages.
+
+2. **Multi-file Graph Construction**: Custom parsing logic, implemented in [rustworkx](https://github.com/Qiskit/rustworkx) and Python, analyzes these ASTs to construct a more sophisticated graph structure. This graph captures relationships between [symbols](/building-with-codegen/symbol-api), [files](/building-with-codegen/files-and-directories), [imports](/building-with-codegen/imports), and more.
+
+### Performance Through Pre-computation
+
+Pre-computing a rich index enables Codegen to make certain operations very fast that that are relevant to refactors and code analysis:
+
+- Finding all usages of a symbol
+- Detecting circular dependencies
+- Analyzing the dependency graphs
+- Tracing call graphs
+- Static analysis-based code retrieval for RAG
+- ...etc.
+
+
+ Pre-parsing the codebase enables constant-time lookups rather than requiring
+ re-parsing or real-time analysis.
+
+
+## Multi-Language Support
+
+One of Codegen's core principles is that many programming tasks are fundamentally similar across languages.
+
+Currently, Codegen supports:
+
+- [Python](/api-reference/python)
+- [TypeScript](/api-reference/typescript)
+- [React & JSX](/building-with-codegen/react-and-jsx)
+
+
+ Learn about how Codegen handles language specifics in the [Language
+ Support](/building-with-codegen/language-support) guide.
+
+
+We've started with these ecosystems but designed our architecture to be extensible. The graph-based approach provides a consistent interface across languages while handling language-specific details under the hood.
+
+## Build with Us
+
+Codegen is just getting started, and we're excited about the possibilities ahead. We enthusiastically welcome contributions from the community, whether it's:
+
+- Adding support for new languages
+- Implementing new analysis capabilities
+- Improving performance
+- Expanding the API
+- Adding new transformations
+- Improving documentation
+
+Check out our [community guide](/introduction/community) to get involved!
diff --git a/docs/graph-sitter/ide-usage.mdx b/docs/graph-sitter/ide-usage.mdx
new file mode 100644
index 000000000..3c58d39ab
--- /dev/null
+++ b/docs/graph-sitter/ide-usage.mdx
@@ -0,0 +1,178 @@
+---
+title: "Using Codegen in Your IDE"
+sidebarTitle: "IDE Usage"
+icon: "window"
+iconType: "solid"
+---
+
+Get up and running with Codegen programs in IDEs like VSCode, Cursor and PyCharm.
+
+Make sure to [install and initialize](/introduction/installation) Codegen with `codegen init`
+
+## Configuring your IDE Interpreter
+
+Codegen creates a custom Python environment in `.codegen/.venv`. Configure your IDE to use this environment for the best development experience.
+
+
+
+ 1. Install the VSCode Python Extensions for LSP and debugging support. We recommend Python, Pylance and Python Debugger for the best experience.
+
+ 2. Open the Command Palette (Cmd/Ctrl + Shift + P)
+ 3. Type "Python: Select Interpreter"
+
+ 4. Choose "Enter interpreter path"
+ 5. Navigate to and select:
+ ```bash
+ .codegen/.venv/bin/python
+ ```
+
+ Alternatively, create a `.vscode/settings.json`:
+ ```json
+ {
+ "python.defaultInterpreterPath": "${workspaceFolder}/.codegen/.venv/bin/python",
+ "python.analysis.extraPaths": [
+ "${workspaceFolder}/.codegen/.venv/lib/python3.12/site-packages"
+ ]
+ }
+ ```
+
+
+
+ 1. Open PyCharm Settings/Preferences
+ 2. Navigate to "Project > Python Interpreter"
+ 3. Click the gear icon βοΈ and select "Add"
+ 4. Choose "Existing Environment"
+ 5. Set interpreter path to:
+ ```bash
+ .codegen/.venv/bin/python
+ ```
+
+
+
+
+
+## MCP Server Setup
+This is an optional step but highly recommended if your IDE supports MCP support and you use AI Agents.
+The MCP server is a local server that allows your AI Agent to interact with the Codegen specific tools,
+it will allow an agent to:
+- ask an expert to create a codemod
+- improve a codemod
+- get setup instructions
+
+### IDE Configuration
+#### Cline
+Add this to your cline_mcp_settings.json:
+```json
+{
+ "mcpServers": {
+ "codegen-cli": {
+ "command": "uv",
+ "args": [
+ "--directory",
+ "/codegen-sdk/src/codegen/cli/mcp",
+ "run",
+ "server.py"
+ ]
+ }
+ }
+}
+```
+
+
+#### Cursor:
+Under the `Settings` > `Feature` > `MCP Servers` section, click "Add New MCP Server" and add the following:
+
+```
+Name: codegen-mcp
+Type: Command
+Command: uv --directory /codegen-sdk/src/codegen/cli/mcp run server.py
+```
+
+
+## Index Codegen Docs
+#### Cursor:
+If you use Cursor you'll be able to configure the IDE to index the Codegen docs. To do so go to `Settings` > `Features` > `Docs`
+and then click on `Add new docs`. We recommend using this url to index the API reference:
+```
+https://docs.codegen.com/api-reference/index
+```
+
+
+## Create a New Codemod
+
+Generate the boilerplate for a new code manipulation program using [codegen create](/cli/create):
+
+```bash
+codegen create organize-types \
+ -d "Move all TypeScript types to \
+ into a centralized types.ts file"
+```
+
+
+ Passing in `-d --description` will get an LLM expert to compose an initial version for you. This requires a Github account registered on [codegen.sh](https://codegen.sh)
+
+
+This will:
+1. Create a new codemod in `.codegen/codemods/organize_types/`
+2. Generate a custom `system-prompt.txt` based on your task
+3. Set up the basic structure for your program
+
+
+The generated codemod includes type hints and docstrings, making it easy to get IDE autocompletion and documentation.
+
+
+## Iterating with Chat Assistants
+
+When you do `codegen init`, you will receive a [system prompt optimized for AI consumption](/introduction/work-with-ai) at `.codegen/codegen-system-prompt.txt`.
+
+If you reference this file in "chat" sessions with Copilot, Cursor, Cody, etc., the assistant will become fluent in Codegen.
+
+
+
+ Collaborating with Cursor's assistant and the Codegen system prompt
+
+
+In addition, when you [create](/cli/create) a codemod with "-d", Codegen generates an optimized system prompt in `.codegen/codemods/{name}/{name}-system-prompt.txt`. This prompt contains:
+- Relevant Codegen API documentation
+- Examples of relevant transformations
+- Context about your specific task
+
+
+You can also drag and drop the system prompt ([available here](/introduction/work-with-ai))file directly into chat windows like ChatGPT or Claude for standalone help.
+
+
+## Running and Testing Codemods
+
+```bash
+# Run => write changes to disk
+codegen run organize-types
+
+# Reset changes on disk
+codegen reset
+```
+
+You can also run the program directly via `.codegen/.venv/bin/python path/to/codemod.py` or via your editor's debugger
+
+## Viewing Changes
+
+We recommend viewing changes in your IDE's native diff editor.
+
+
+## What's Next
+
+
+
+ See real-world examples of codemods in action.
+
+
+ Learn about Codegen's core concepts and features
+
+
diff --git a/docs/graph-sitter/installation.mdx b/docs/graph-sitter/installation.mdx
new file mode 100644
index 000000000..41188c64b
--- /dev/null
+++ b/docs/graph-sitter/installation.mdx
@@ -0,0 +1,125 @@
+---
+title: "Installation"
+sidebarTitle: "Installation"
+icon: "download"
+iconType: "solid"
+---
+
+Install and set up Codegen in your development environment.
+
+#### We currently support:
+- Running Codegen in Python 3.12 - 3.13 (recommended: Python 3.13+)
+- macOS and Linux
+ - macOS is supported
+ - Linux is supported on x86_64 and aarch64 with glibc 2.34+
+ - Windows is supported via WSL. See [here](https://docs.codegen.com/building-with-codegen/codegen-with-wsl) for more details.
+- Python, Typescript, Javascript and React codebases
+
+## Prerequisites
+
+We recommend using [uv](https://github.com/astral-sh/uv) for installation. If you haven't installed `uv` yet:
+```bash
+curl -LsSf https://astral.sh/uv/install.sh | sh
+```
+
+## Installing Codegen
+
+```bash
+uv tool install codegen --python 3.13
+```
+
+
+
+This makes the `codegen` command available globally in your terminal, while keeping its dependencies isolated.
+
+
+## Quick Start
+
+Let's walk through a minimal example of using Codegen in a project:
+
+1. Navigate to your repository:
+ ```bash
+ cd path/to/your/project
+ ```
+
+2. Initialize Codegen in your project with [codegen init](/cli/init):
+ ```bash
+ codegen init
+ ```
+
+ This creates a `.codegen/` directory with:
+ ```bash
+ .codegen/
+ βββ .venv/ # Python virtual environment (gitignored)
+ βββ config.toml # Project configuration
+ βββ codemods/ # Your codemod implementations
+ βββ jupyter/ # Jupyter notebooks for exploration
+ βββ codegen-system-prompt.txt # AI system prompt
+ ```
+
+3. Create your first codemod with [codegen create](/cli/create):
+ ```bash
+ codegen create organize-imports \
+ -d "Sort and organize imports according to PEP8"
+ ```
+
+ The `-d` flag in `codegen create` generates an AI-powered implementation. This requires a Github account registered on [codegen.sh](https://codegen.sh)
+
+
+
+
+4. Run your codemod with [codegen run](/cli/run):
+ ```bash
+ codegen run organize-imports
+ ```
+
+5. Reset any filesystem changes (excluding `.codegen/*`) with [codegen reset](/cli/reset):
+ ```bash
+ codegen reset
+ ```
+
+## Troubleshooting
+
+Having issues? Here are some common problems and their solutions:
+
+- **I'm hitting an UV error related to `[[ packages ]]`**: This means you're likely using an outdated version of UV. Try updating to the latest version with: `uv self update`.
+- **I'm hitting an error about `No module named 'codegen.sdk.extensions.utils'`**: The compiled cython extensions are out of sync. Update them with `uv sync --reinstall-package codegen`.
+- **I'm hitting a `RecursionError: maximum recursion depth exceeded` error while parsing my codebase**: If you are using python 3.12, try upgrading to 3.13. If you are already on 3.13, try upping the recursion limit with `sys.setrecursionlimit(10000)`.
+
+
+For more help, join our [community Slack](/introduction/community) or check the [FAQ](/introduction/faq).
+
+
+## Next Steps
+
+
+
+ Learn how to use Codegen effectively in VSCode, Cursor, and other IDEs.
+
+
+ Follow step-by-step tutorials for common code transformation tasks.
+
+
+ Leverage AI assistants like Copilot, Cursor and Devin
+
+
+ Learn more about building with Codegen
+
+
+
diff --git a/docs/graph-sitter/overview.mdx b/docs/graph-sitter/overview.mdx
new file mode 100644
index 000000000..4d428fc71
--- /dev/null
+++ b/docs/graph-sitter/overview.mdx
@@ -0,0 +1,159 @@
+---
+title: "Codegen"
+sidebarTitle: "Overview"
+icon: "code"
+iconType: "solid"
+---
+
+[Codegen](https://github.com/codegen-sh/codegen-sdk) is a python library for manipulating codebases.
+
+It provides a scriptable interface to a powerful, multi-lingual language server built on top of [Tree-sitter](https://tree-sitter.github.io/tree-sitter/).
+
+```python
+from codegen import Codebase
+
+# Codegen builds a complete graph connecting
+# functions, classes, imports and their relationships
+codebase = Codebase("./")
+
+# Work with code without dealing with syntax trees or parsing
+for function in codebase.functions:
+ # Comprehensive static analysis for references, dependencies, etc.
+ if not function.usages:
+ # Auto-handles references and imports to maintain correctness
+ function.remove()
+
+# Fast, in-memory code index
+codebase.commit()
+```
+
+
+
+Codegen handles complex refactors while maintaining correctness, enabling a broad set of advanced code manipulation programs.
+
+
+Codegen works with both Python and Typescript/JSX codebases. Learn more about language support [here](/building-with-codegen/language-support).
+
+## Quick Started
+
+
+Codegen requires Python 3.12 - 3.13 (recommended: Python 3.13+).
+
+
+### Using UV (Recommended)
+```bash
+uv tool install codegen --python 3.13
+```
+
+### Using Pipx
+
+
+Pipx is not officially supported by Codegen, but it should still work.
+
+
+```bash
+pipx install codegen
+```
+
+
+For further & more in depth installation instructions, see the [installation guide](/introduction/installation).
+
+
+## What can I do with Codegen?
+
+Codegen's simple yet powerful APIs enable a range of applications, including:
+
+
+
+ Create an intelligent agent that can analyze and manipulate your codebase using natural language.
+
+
+ Generate interactive visualizations of your codebase's structure, dependencies, and relationships.
+
+
+ Create high-quality training data for fine-tuning LLMs on your codebase.
+
+
+ Create powerful code transformations to automate large-scale changes.
+
+
+
+See below for an example call graph visualization generated with Codegen.
+
+
+
+
+
+View source code on [modal/modal-client](https://github.com/modal-labs/modal-client/blob/cbac0d80dfd98588027ecd21850152776be3ab82/modal/client.py#L70). View codemod on [codegen.sh](https://www.codegen.sh/codemod/66e2e195-ceec-4935-876a-ed4cfc1731c7/public/diff)
+
+
+## Get Started
+
+import {
+ COMMUNITY_SLACK_URL,
+ CODEGEN_SDK_GITHUB_URL,
+} from "/snippets/links.mdx";
+
+
+
+ Follow our step-by-step tutorial to start manipulating code with Codegen.
+
+
+ Learn how to use Codegen for common code transformation tasks.
+
+
+ Star us on GitHub and contribute to the project.
+
+
+ Get help and connect with the Codegen community.
+
+
+
+## Why Codegen?
+
+Many software engineering tasks - refactors, enforcing patterns, analyzing control flow, etc. - are fundamentally programmatic operations. Yet the tools we use to express these transformations often feel disconnected from how we think about code.
+
+Codegen was engineered backwards from real-world refactors we performed for enterprises at [Codegen, Inc.](/introduction/about). Instead of starting with theoretical abstractions, we built the set of APIs that map directly to how humans and AI think about code changes:
+
+- **Natural Mental Model**: Express transformations through high-level operations that match how you reason about code changes, not low-level text or AST manipulation.
+- **Clean Business Logic**: Let the engine handle the complexities of imports, references, and cross-file dependencies.
+- **Scale with Confidence**: Make sweeping changes across large codebases consistently across Python, TypeScript, JavaScript, and React.
+
+As AI becomes increasingly sophisticated, we're seeing a fascinating shift: AI agents aren't bottlenecked by their ability to understand code or generate solutions. Instead, they're limited by their ability to efficiently manipulate codebases. The challenge isn't the "brain" - it's the "hands."
+
+We built Codegen with a key insight: future AI agents will need to ["act via code,"](/blog/act-via-code) building their own sophisticated tools for code manipulation. Rather than generating diffs or making direct text changes, these agents will:
+
+1. Express transformations as composable programs
+2. Build higher-level tools by combining primitive operations
+3. Create and maintain their own abstractions for common patterns
+
+This creates a shared language that both humans and AI can reason about effectively, making code changes more predictable, reviewable, and maintainable. Whether you're a developer writing a complex refactoring script or an AI agent building transformation tools, Codegen provides the foundation for expressing code changes as they should be: through code itself.
diff --git a/docs/graph-sitter/work-with-ai.mdx b/docs/graph-sitter/work-with-ai.mdx
new file mode 100644
index 000000000..c826aad75
--- /dev/null
+++ b/docs/graph-sitter/work-with-ai.mdx
@@ -0,0 +1,86 @@
+---
+title: "Working with AI"
+sidebarTitle: "AI Integration"
+icon: "microchip"
+iconType: "solid"
+---
+
+Codegen is designed to be used with AI assistants. This document describes how to use Codegen with common AI tools, including Copilot, Cursor, Devin and more.
+
+## System Prompt
+
+Codegen provides a `.txt` file that you can drag-and-drop into any chat assistant. This is roughly 60k tokens and will enable chat assistants like, ChatGPT, Claude 3.5 etc. to build effectively with Codegen.
+
+import {
+ CODEGEN_SYSTEM_PROMPT
+} from "/snippets/links.mdx";
+
+
+ Download System Prompt
+
+
+Learn about leveraging this in IDE chat assistants like Cursor [here](/introduction/ide-usage#iterating-with-chat-assistants)
+
+## Generating System Prompts
+
+The [Codegen CLI](/cli/about) provides commands to generate `.md` files that can be fed to any AI assistant for more accurate and contextual help.
+
+When you create a new codemod via [codegen create](/cli/create):
+
+```bash
+codegen create delete-dead-imports . --description "Delete unused imports"
+```
+
+Codegen automatically generates an optimized ["system prompt"](https://news.ycombinator.com/item?id=37880023) that includes:
+
+- An introduction to Codegen
+- Codegen API documentation
+- Examples of relevant transformations
+
+You can find this generated prompt in the `.codegen/prompts/-system-prompt.md` file.
+
+
+ All contents of the `.codegen/prompts` directory are by default ignored the
+ `.gitignore` file. after running [codegen init](/cli/init)
+
+
+This `.md` file can be used with any AI assistant (Claude, GPT-4, etc.) to get more accurate and contextual help.
+
+## Example Workflow
+
+
+
+ Use the [create command](/cli/create) with a detailed description of what you want to accomplish:
+ ```bash
+ codegen create modernize-components . --description "Convert class components to functional components with hooks"
+ ```
+
+
+ Check the AI context that Codegen generated for your transformation: ```bash
+ cat codegen-sh/codemods/modernize-components/prompt.md ```
+
+
+
+ Reference your codemod when asking questions to get contextual help: ```
+ @codegen-sh/codemods/modernize-components How should I handle
+ componentDidMount? ```
+
+
+
+ The AI will understand you're working on React modernization and provide relevant suggestions about using useEffect hooks and other modern React patterns.
+
+
+
+## Copilot, Cursor and Windsurf (IDEs)
+
+When using IDE chat assistants, you can leverage Codegen's context by mentioning your codemod in composer mode:
+
+```bash
+@.codegen/codemods/upgrade-react18 @.codegen/prompts/system-prompt.md
+```
+
+This will ensure that the IDE's native chat model is aware of the APIs and common patterns for Codegen.
+
+## Devin, OpenHands and Semi-autonomous Code Agents
+
+Coming soon!
diff --git a/docs/introduction/overview.mdx b/docs/introduction/overview.mdx
index 4d428fc71..b2e5c590b 100644
--- a/docs/introduction/overview.mdx
+++ b/docs/introduction/overview.mdx
@@ -5,112 +5,62 @@ icon: "code"
iconType: "solid"
---
-[Codegen](https://github.com/codegen-sh/codegen-sdk) is a python library for manipulating codebases.
+The [Codegen SDK](https://github.com/codegen-sh/codegen-sdk) enables developers to programmatically interact with [Codegen](https://codegen.com) SWE agents.
-It provides a scriptable interface to a powerful, multi-lingual language server built on top of [Tree-sitter](https://tree-sitter.github.io/tree-sitter/).
+Go to [developer settings](https://codegen.sh/developer) to generate an API token
```python
-from codegen import Codebase
+from codegen.agents.agent import Agent
-# Codegen builds a complete graph connecting
-# functions, classes, imports and their relationships
-codebase = Codebase("./")
+# Initialize the Agent with your organization ID and API token
+agent = Agent(
+ org_id="YOUR_ORG_ID", # Find this at codegen.com/developer
+ token="YOUR_API_TOKEN", # Get this from codegen.com/developer
+ # base_url="https://codegen-sh-rest-api.modal.run", # Optional - defaults to production
+)
-# Work with code without dealing with syntax trees or parsing
-for function in codebase.functions:
- # Comprehensive static analysis for references, dependencies, etc.
- if not function.usages:
- # Auto-handles references and imports to maintain correctness
- function.remove()
+# Run an agent with a prompt
+task = agent.run(prompt="Implement a new feature to sort users by last login.")
-# Fast, in-memory code index
-codebase.commit()
-```
+# Check the initial status
+print(task.status)
+# Refresh the task to get updated status (tasks can take time)
+task.refresh()
-
-Codegen handles complex refactors while maintaining correctness, enabling a broad set of advanced code manipulation programs.
-
+# Check the updated status
+print(task.status)
-Codegen works with both Python and Typescript/JSX codebases. Learn more about language support [here](/building-with-codegen/language-support).
+# Once task is complete, you can access the result
+if task.status == "completed":
+ print(task.result) # Result often contains code, summaries, or links
+```
-## Quick Started
-Codegen requires Python 3.12 - 3.13 (recommended: Python 3.13+).
+Codegen agents can research code, create PRs, modify Linear tickets, and much more.
-### Using UV (Recommended)
-```bash
-uv tool install codegen --python 3.13
-```
+## Installation
-### Using Pipx
-
-Pipx is not officially supported by Codegen, but it should still work.
-
+Install the SDK using pip or uv:
```bash
-pipx install codegen
+pip install codegen
+# or
+uv pip install codegen
```
-
-For further & more in depth installation instructions, see the [installation guide](/introduction/installation).
-
-
-## What can I do with Codegen?
+## What can I do with the Codegen SDK?
-Codegen's simple yet powerful APIs enable a range of applications, including:
+The Codegen SDK is your gateway to programmatically interacting with your AI Software Engineer. You can use it to:
-
-
- Create an intelligent agent that can analyze and manipulate your codebase using natural language.
-
-
- Generate interactive visualizations of your codebase's structure, dependencies, and relationships.
-
-
- Create high-quality training data for fine-tuning LLMs on your codebase.
-
-
- Create powerful code transformations to automate large-scale changes.
-
-
+- **Automate development tasks**: Assign tasks like implementing features, fixing bugs, writing tests, or improving documentation to the agent.
+- **Integrate AI into your workflows**: Trigger agent tasks from your CI/CD pipelines, scripts, or other development tools.
+- **Provide context and guidance**: Supply the agent with specific instructions, relevant code snippets, or background information to ensure it performs tasks according to your requirements.
-See below for an example call graph visualization generated with Codegen.
-
-
-
-
-
-View source code on [modal/modal-client](https://github.com/modal-labs/modal-client/blob/cbac0d80dfd98588027ecd21850152776be3ab82/modal/client.py#L70). View codemod on [codegen.sh](https://www.codegen.sh/codemod/66e2e195-ceec-4935-876a-ed4cfc1731c7/public/diff)
-
+Essentially, the SDK allows you to leverage Codegen's AI capabilities wherever you can run Python code.
## Get Started
diff --git a/docs/mint.json b/docs/mint.json
index 737c098ee..7822595ff 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -1,396 +1,394 @@
{
- "$schema": "https://mintlify.com/schema.json",
- "name": "Codegen",
- "logo": {
- "dark": "https://cdn.prod.website-files.com/67070304751b9b01bf6a161c/679bcf45a3e32761c42b324b_Codegen_Logomark_Dark.svg",
- "light": "https://cdn.prod.website-files.com/67070304751b9b01bf6a161c/679bcf45bf55446746125835_Codegen_Logomark_Light.svg"
- },
- "modeToggle": {
- "default": "dark"
- },
- "metadata": {
- "og:site_name": "Codegen",
- "og:title": "Codegen - Manipulate Code at Scale",
- "og:description": "A scriptable interface to a powerful, multi-lingual language server built on top of Tree-sitter.",
- "og:url": "https://docs.codegen.com",
- "og:locale": "en_US",
- "og:logo": "https://i.imgur.com/f4OVOqI.png",
- "article:publisher": "Codegen, Inc.",
- "twitter:site": "@codegen"
- },
- "favicon": "/favicon.svg",
- "colors": {
- "primary": "#a277ff",
- "light": "#a277ff",
- "dark": "#a277ff",
- "anchors": {
- "from": "#61ffca",
- "to": "#61ffca"
- }
- },
- "theme": "prism",
- "background": {
- "style": "gradient"
- },
- "analytics": {
- "posthog": {
- "apiKey": "phc_GLxaINoQJnuyCyxDmTciQqzdKBYFVDkY7bRBO4bDdso"
- }
- },
- "feedback": {
- "thumbsRating": true
- },
- "topbarCtaButton": {
- "name": "GitHub",
- "url": "https://github.com/codegen-sh/codegen-sdk"
- },
- "tabs": [
- {
- "name": "API Reference",
- "url": "/api-reference"
- },
- {
- "name": "CLI",
- "url": "/cli"
- },
- {
- "name": "Blog",
- "url": "/blog"
- },
- {
- "name": "Changelog",
- "url": "/changelog"
- },
- {
- "name": "codegen",
- "url": "/gen"
- }
- ],
- "navigation": [
- {
- "group": "Introduction",
- "pages": [
- "introduction/overview",
- "introduction/getting-started",
- "introduction/installation",
- "introduction/ide-usage",
- "introduction/work-with-ai",
- "introduction/how-it-works",
- "introduction/advanced-settings",
- "introduction/guiding-principles",
- "introduction/community",
- "introduction/about",
- "introduction/faq"
- ]
- },
- {
- "group": "Tutorials",
- "pages": [
- "tutorials/at-a-glance",
- "tutorials/build-code-agent",
- "tutorials/slack-bot",
- "tutorials/github-review-bot",
- "tutorials/deep-code-research",
- "tutorials/codebase-analytics-dashboard",
- "tutorials/training-data",
- "tutorials/codebase-visualization",
- "tutorials/migrating-apis",
- "tutorials/organize-your-codebase",
- "tutorials/promise-to-async-await",
- "tutorials/modularity",
- "tutorials/manage-feature-flags",
- "tutorials/deleting-dead-code",
- "tutorials/increase-type-coverage",
- "tutorials/managing-typescript-exports",
- "tutorials/converting-default-exports",
- "tutorials/creating-documentation",
- "tutorials/react-modernization",
- "tutorials/unittest-to-pytest",
- "tutorials/sqlalchemy-1.6-to-2.0",
- "tutorials/fixing-import-loops-in-pytorch",
- "tutorials/python2-to-python3",
- "tutorials/flask-to-fastapi",
- "tutorials/build-mcp",
- "tutorials/neo4j-graph",
- "tutorials/attributions"
- ]
- },
- {
- "group": "Building with Codegen",
- "pages": [
- "building-with-codegen/at-a-glance",
- "building-with-codegen/parsing-codebases",
- "building-with-codegen/reusable-codemods",
- "building-with-codegen/dot-codegen",
- "building-with-codegen/function-decorator",
- "building-with-codegen/language-support",
- "building-with-codegen/commit-and-reset",
- "building-with-codegen/git-operations",
- "building-with-codegen/files-and-directories",
- "building-with-codegen/the-editable-api",
- "building-with-codegen/symbol-api",
- "building-with-codegen/class-api",
- "building-with-codegen/imports",
- "building-with-codegen/exports",
- "building-with-codegen/inheritable-behaviors",
- "building-with-codegen/statements-and-code-blocks",
- "building-with-codegen/dependencies-and-usages",
- "building-with-codegen/function-calls-and-callsites",
- "building-with-codegen/variable-assignments",
- "building-with-codegen/local-variables",
- "building-with-codegen/comments-and-docstrings",
- "building-with-codegen/external-modules",
- "building-with-codegen/type-annotations",
- "building-with-codegen/moving-symbols",
- "building-with-codegen/collections",
- "building-with-codegen/traversing-the-call-graph",
- "building-with-codegen/react-and-jsx",
- "building-with-codegen/codebase-visualization",
- "building-with-codegen/flagging-symbols",
- "building-with-codegen/calling-out-to-llms",
- "building-with-codegen/semantic-code-search",
- "building-with-codegen/reducing-conditions"
- ]
- },
- {
- "group": "CLI",
- "pages": [
- "cli/about",
- "cli/init",
- "cli/notebook",
- "cli/create",
- "cli/run",
- "cli/reset",
- "cli/expert"
- ]
- },
- {
- "group": "Changelog",
- "pages": [
- "changelog/changelog"
- ]
- },
- {
- "group": "Blog",
- "pages": [
- "blog/posts",
- "blog/devin",
- "blog/act-via-code",
- "blog/promise-to-async-await-twilio",
- "blog/fixing-import-loops"
- ]
- },
- {
- "group": "codegen",
- "pages": [
- "gen/introduction",
- "gen/capabilities",
- "gen/integrations",
- "gen/faq"
- ]
- },
- {
- "group": "API Reference",
- "pages": [
- "api-reference/index",
- {
- "group": "Core",
- "icon": "code",
- "pages": [
- "api-reference/core/Argument",
- "api-reference/core/Assignment",
- "api-reference/core/AssignmentStatement",
- "api-reference/core/Attribute",
- "api-reference/core/AwaitExpression",
- "api-reference/core/BinaryExpression",
- "api-reference/core/BlockStatement",
- "api-reference/core/Boolean",
- "api-reference/core/Callable",
- "api-reference/core/CatchStatement",
- "api-reference/core/ChainedAttribute",
- "api-reference/core/Class",
- "api-reference/core/CodeBlock",
- "api-reference/core/CodeOwner",
- "api-reference/core/Codebase",
- "api-reference/core/Comment",
- "api-reference/core/CommentGroup",
- "api-reference/core/ComparisonExpression",
- "api-reference/core/Decorator",
- "api-reference/core/Dict",
- "api-reference/core/Directory",
- "api-reference/core/Editable",
- "api-reference/core/Export",
- "api-reference/core/ExportStatement",
- "api-reference/core/Exportable",
- "api-reference/core/Expression",
- "api-reference/core/ExpressionGroup",
- "api-reference/core/ExpressionStatement",
- "api-reference/core/ExternalModule",
- "api-reference/core/File",
- "api-reference/core/FlagKwargs",
- "api-reference/core/ForLoopStatement",
- "api-reference/core/Function",
- "api-reference/core/FunctionCall",
- "api-reference/core/GenericType",
- "api-reference/core/HasBlock",
- "api-reference/core/HasName",
- "api-reference/core/HasValue",
- "api-reference/core/IfBlockStatement",
- "api-reference/core/Import",
- "api-reference/core/ImportStatement",
- "api-reference/core/ImportType",
- "api-reference/core/Importable",
- "api-reference/core/Interface",
- "api-reference/core/List",
- "api-reference/core/MessageType",
- "api-reference/core/MultiExpression",
- "api-reference/core/MultiLineCollection",
- "api-reference/core/Name",
- "api-reference/core/NamedType",
- "api-reference/core/NoneType",
- "api-reference/core/Number",
- "api-reference/core/Pair",
- "api-reference/core/Parameter",
- "api-reference/core/ParenthesizedExpression",
- "api-reference/core/Placeholder",
- "api-reference/core/PlaceholderType",
- "api-reference/core/RaiseStatement",
- "api-reference/core/ReturnStatement",
- "api-reference/core/SourceFile",
- "api-reference/core/Span",
- "api-reference/core/Statement",
- "api-reference/core/StatementType",
- "api-reference/core/String",
- "api-reference/core/StubPlaceholder",
- "api-reference/core/SubscriptExpression",
- "api-reference/core/SwitchCase",
- "api-reference/core/SwitchStatement",
- "api-reference/core/Symbol",
- "api-reference/core/SymbolGroup",
- "api-reference/core/SymbolStatement",
- "api-reference/core/TernaryExpression",
- "api-reference/core/TryCatchStatement",
- "api-reference/core/Tuple",
- "api-reference/core/TupleType",
- "api-reference/core/Type",
- "api-reference/core/TypeAlias",
- "api-reference/core/TypePlaceholder",
- "api-reference/core/Typeable",
- "api-reference/core/UnaryExpression",
- "api-reference/core/UnionType",
- "api-reference/core/Unpack",
- "api-reference/core/Unwrappable",
- "api-reference/core/Usable",
- "api-reference/core/Usage",
- "api-reference/core/UsageKind",
- "api-reference/core/UsageType",
- "api-reference/core/Value",
- "api-reference/core/WhileStatement",
- "api-reference/core/WithStatement"
- ]
- },
- {
- "group": "Python",
- "icon": "python",
- "pages": [
- "api-reference/python/PyAssignment",
- "api-reference/python/PyAssignmentStatement",
- "api-reference/python/PyAttribute",
- "api-reference/python/PyBlockStatement",
- "api-reference/python/PyBreakStatement",
- "api-reference/python/PyCatchStatement",
- "api-reference/python/PyChainedAttribute",
- "api-reference/python/PyClass",
- "api-reference/python/PyCodeBlock",
- "api-reference/python/PyComment",
- "api-reference/python/PyCommentGroup",
- "api-reference/python/PyCommentType",
- "api-reference/python/PyConditionalExpression",
- "api-reference/python/PyDecorator",
- "api-reference/python/PyFile",
- "api-reference/python/PyForLoopStatement",
- "api-reference/python/PyFunction",
- "api-reference/python/PyGenericType",
- "api-reference/python/PyHasBlock",
- "api-reference/python/PyIfBlockStatement",
- "api-reference/python/PyImport",
- "api-reference/python/PyImportStatement",
- "api-reference/python/PyMatchCase",
- "api-reference/python/PyMatchStatement",
- "api-reference/python/PyNamedType",
- "api-reference/python/PyParameter",
- "api-reference/python/PyPassStatement",
- "api-reference/python/PyReturnTypePlaceholder",
- "api-reference/python/PyString",
- "api-reference/python/PySymbol",
- "api-reference/python/PyTryCatchStatement",
- "api-reference/python/PyUnionType",
- "api-reference/python/PyWhileStatement"
- ]
- },
- {
- "group": "Typescript",
- "icon": "js",
- "pages": [
- "api-reference/typescript/JSXElement",
- "api-reference/typescript/JSXExpression",
- "api-reference/typescript/JSXProp",
- "api-reference/typescript/TSArrayType",
- "api-reference/typescript/TSAssignment",
- "api-reference/typescript/TSAssignmentStatement",
- "api-reference/typescript/TSAttribute",
- "api-reference/typescript/TSBlockStatement",
- "api-reference/typescript/TSCatchStatement",
- "api-reference/typescript/TSChainedAttribute",
- "api-reference/typescript/TSClass",
- "api-reference/typescript/TSCodeBlock",
- "api-reference/typescript/TSComment",
- "api-reference/typescript/TSCommentGroup",
- "api-reference/typescript/TSCommentType",
- "api-reference/typescript/TSConditionalType",
- "api-reference/typescript/TSConfig",
- "api-reference/typescript/TSDecorator",
- "api-reference/typescript/TSDict",
- "api-reference/typescript/TSEnum",
- "api-reference/typescript/TSExport",
- "api-reference/typescript/TSExpressionType",
- "api-reference/typescript/TSFile",
- "api-reference/typescript/TSForLoopStatement",
- "api-reference/typescript/TSFunction",
- "api-reference/typescript/TSFunctionType",
- "api-reference/typescript/TSGenericType",
- "api-reference/typescript/TSHasBlock",
- "api-reference/typescript/TSIfBlockStatement",
- "api-reference/typescript/TSImport",
- "api-reference/typescript/TSImportStatement",
- "api-reference/typescript/TSInterface",
- "api-reference/typescript/TSLabeledStatement",
- "api-reference/typescript/TSLookupType",
- "api-reference/typescript/TSNamedType",
- "api-reference/typescript/TSNamespace",
- "api-reference/typescript/TSObjectType",
- "api-reference/typescript/TSPair",
- "api-reference/typescript/TSParameter",
- "api-reference/typescript/TSQueryType",
- "api-reference/typescript/TSReadonlyType",
- "api-reference/typescript/TSReturnTypePlaceholder",
- "api-reference/typescript/TSString",
- "api-reference/typescript/TSSwitchCase",
- "api-reference/typescript/TSSwitchStatement",
- "api-reference/typescript/TSSymbol",
- "api-reference/typescript/TSTernaryExpression",
- "api-reference/typescript/TSTryCatchStatement",
- "api-reference/typescript/TSTypeAlias",
- "api-reference/typescript/TSUndefinedType",
- "api-reference/typescript/TSUnionType",
- "api-reference/typescript/TSWhileStatement"
- ]
- }
- ]
- }
- ],
- "footerSocials": {
- "x": "https://x.com/codegen",
- "linkedin": "https://linkedin.com/company/codegen-dot-com"
- }
-}
\ No newline at end of file
+ "$schema": "https://mintlify.com/schema.json",
+ "name": "Codegen",
+ "logo": {
+ "dark": "https://cdn.prod.website-files.com/67070304751b9b01bf6a161c/679bcf45a3e32761c42b324b_Codegen_Logomark_Dark.svg",
+ "light": "https://cdn.prod.website-files.com/67070304751b9b01bf6a161c/679bcf45bf55446746125835_Codegen_Logomark_Light.svg"
+ },
+ "modeToggle": {
+ "default": "dark"
+ },
+ "metadata": {
+ "og:site_name": "Codegen",
+ "og:title": "Codegen - The SWE that Never Sleeps",
+ "og:description": "Code agents accessible via API, Slack, Linear, Github, and more.",
+ "og:url": "https://docs.codegen.com",
+ "og:locale": "en_US",
+ "og:logo": "https://i.imgur.com/f4OVOqI.png",
+ "article:publisher": "Codegen, Inc.",
+ "twitter:site": "@codegen"
+ },
+ "favicon": "/favicon.svg",
+ "colors": {
+ "primary": "#a277ff",
+ "light": "#a277ff",
+ "dark": "#a277ff",
+ "anchors": {
+ "from": "#61ffca",
+ "to": "#61ffca"
+ }
+ },
+ "theme": "prism",
+ "background": {
+ "style": "gradient"
+ },
+ "analytics": {
+ "posthog": {
+ "apiKey": "phc_GLxaINoQJnuyCyxDmTciQqzdKBYFVDkY7bRBO4bDdso"
+ }
+ },
+ "feedback": {
+ "thumbsRating": true
+ },
+ "topbarCtaButton": {
+ "name": "GitHub",
+ "url": "https://github.com/codegen-sh/codegen-sdk"
+ },
+ "tabs": [
+ {
+ "name": "API Reference",
+ "url": "/api-reference"
+ },
+ {
+ "name": "CLI",
+ "url": "/cli"
+ },
+ {
+ "name": "Blog",
+ "url": "/blog"
+ },
+ {
+ "name": "Changelog",
+ "url": "/changelog"
+ },
+ {
+ "name": "Graph-sitter",
+ "url": "/graph-sitter"
+ }
+ ],
+ "navigation": [
+ {
+ "group": "Introduction",
+ "pages": [
+ "introduction/overview",
+ "introduction/getting-started",
+ "introduction/installation",
+ "introduction/ide-usage",
+ "introduction/work-with-ai",
+ "introduction/how-it-works",
+ "introduction/advanced-settings",
+ "introduction/guiding-principles",
+ "introduction/community",
+ "introduction/about",
+ "introduction/faq"
+ ]
+ },
+ {
+ "group": "Tutorials",
+ "pages": [
+ "tutorials/at-a-glance",
+ "tutorials/build-code-agent",
+ "tutorials/slack-bot",
+ "tutorials/github-review-bot",
+ "tutorials/deep-code-research",
+ "tutorials/codebase-analytics-dashboard",
+ "tutorials/training-data",
+ "tutorials/codebase-visualization",
+ "tutorials/migrating-apis",
+ "tutorials/organize-your-codebase",
+ "tutorials/promise-to-async-await",
+ "tutorials/modularity",
+ "tutorials/manage-feature-flags",
+ "tutorials/deleting-dead-code",
+ "tutorials/increase-type-coverage",
+ "tutorials/managing-typescript-exports",
+ "tutorials/converting-default-exports",
+ "tutorials/creating-documentation",
+ "tutorials/react-modernization",
+ "tutorials/unittest-to-pytest",
+ "tutorials/sqlalchemy-1.6-to-2.0",
+ "tutorials/fixing-import-loops-in-pytorch",
+ "tutorials/python2-to-python3",
+ "tutorials/flask-to-fastapi",
+ "tutorials/build-mcp",
+ "tutorials/neo4j-graph",
+ "tutorials/attributions"
+ ]
+ },
+ {
+ "group": "Building with Codegen",
+ "pages": [
+ "building-with-codegen/at-a-glance",
+ "building-with-codegen/parsing-codebases",
+ "building-with-codegen/reusable-codemods",
+ "building-with-codegen/dot-codegen",
+ "building-with-codegen/function-decorator",
+ "building-with-codegen/language-support",
+ "building-with-codegen/commit-and-reset",
+ "building-with-codegen/git-operations",
+ "building-with-codegen/files-and-directories",
+ "building-with-codegen/the-editable-api",
+ "building-with-codegen/symbol-api",
+ "building-with-codegen/class-api",
+ "building-with-codegen/imports",
+ "building-with-codegen/exports",
+ "building-with-codegen/inheritable-behaviors",
+ "building-with-codegen/statements-and-code-blocks",
+ "building-with-codegen/dependencies-and-usages",
+ "building-with-codegen/function-calls-and-callsites",
+ "building-with-codegen/variable-assignments",
+ "building-with-codegen/local-variables",
+ "building-with-codegen/comments-and-docstrings",
+ "building-with-codegen/external-modules",
+ "building-with-codegen/type-annotations",
+ "building-with-codegen/moving-symbols",
+ "building-with-codegen/collections",
+ "building-with-codegen/traversing-the-call-graph",
+ "building-with-codegen/react-and-jsx",
+ "building-with-codegen/codebase-visualization",
+ "building-with-codegen/flagging-symbols",
+ "building-with-codegen/calling-out-to-llms",
+ "building-with-codegen/semantic-code-search",
+ "building-with-codegen/reducing-conditions"
+ ]
+ },
+ {
+ "group": "Changelog",
+ "pages": ["changelog/changelog"]
+ },
+ {
+ "group": "CLI",
+ "pages": [
+ "cli/about",
+ "cli/init",
+ "cli/notebook",
+ "cli/create",
+ "cli/run",
+ "cli/reset",
+ "cli/expert"
+ ]
+ },
+ {
+ "group": "Blog",
+ "pages": [
+ "blog/posts",
+ "blog/devin",
+ "blog/act-via-code",
+ "blog/promise-to-async-await-twilio",
+ "blog/fixing-import-loops"
+ ]
+ },
+ {
+ "group": "codegen",
+ "pages": [
+ "gen/introduction",
+ "gen/capabilities",
+ "gen/integrations",
+ "gen/faq"
+ ]
+ },
+ {
+ "group": "API Reference",
+ "pages": [
+ "api-reference/index",
+ {
+ "group": "Core",
+ "icon": "code",
+ "pages": [
+ "api-reference/core/Argument",
+ "api-reference/core/Assignment",
+ "api-reference/core/AssignmentStatement",
+ "api-reference/core/Attribute",
+ "api-reference/core/AwaitExpression",
+ "api-reference/core/BinaryExpression",
+ "api-reference/core/BlockStatement",
+ "api-reference/core/Boolean",
+ "api-reference/core/Callable",
+ "api-reference/core/CatchStatement",
+ "api-reference/core/ChainedAttribute",
+ "api-reference/core/Class",
+ "api-reference/core/CodeBlock",
+ "api-reference/core/CodeOwner",
+ "api-reference/core/Codebase",
+ "api-reference/core/Comment",
+ "api-reference/core/CommentGroup",
+ "api-reference/core/ComparisonExpression",
+ "api-reference/core/Decorator",
+ "api-reference/core/Dict",
+ "api-reference/core/Directory",
+ "api-reference/core/Editable",
+ "api-reference/core/Export",
+ "api-reference/core/ExportStatement",
+ "api-reference/core/Exportable",
+ "api-reference/core/Expression",
+ "api-reference/core/ExpressionGroup",
+ "api-reference/core/ExpressionStatement",
+ "api-reference/core/ExternalModule",
+ "api-reference/core/File",
+ "api-reference/core/FlagKwargs",
+ "api-reference/core/ForLoopStatement",
+ "api-reference/core/Function",
+ "api-reference/core/FunctionCall",
+ "api-reference/core/GenericType",
+ "api-reference/core/HasBlock",
+ "api-reference/core/HasName",
+ "api-reference/core/HasValue",
+ "api-reference/core/IfBlockStatement",
+ "api-reference/core/Import",
+ "api-reference/core/ImportStatement",
+ "api-reference/core/ImportType",
+ "api-reference/core/Importable",
+ "api-reference/core/Interface",
+ "api-reference/core/List",
+ "api-reference/core/MessageType",
+ "api-reference/core/MultiExpression",
+ "api-reference/core/MultiLineCollection",
+ "api-reference/core/Name",
+ "api-reference/core/NamedType",
+ "api-reference/core/NoneType",
+ "api-reference/core/Number",
+ "api-reference/core/Pair",
+ "api-reference/core/Parameter",
+ "api-reference/core/ParenthesizedExpression",
+ "api-reference/core/Placeholder",
+ "api-reference/core/PlaceholderType",
+ "api-reference/core/RaiseStatement",
+ "api-reference/core/ReturnStatement",
+ "api-reference/core/SourceFile",
+ "api-reference/core/Span",
+ "api-reference/core/Statement",
+ "api-reference/core/StatementType",
+ "api-reference/core/String",
+ "api-reference/core/StubPlaceholder",
+ "api-reference/core/SubscriptExpression",
+ "api-reference/core/SwitchCase",
+ "api-reference/core/SwitchStatement",
+ "api-reference/core/Symbol",
+ "api-reference/core/SymbolGroup",
+ "api-reference/core/SymbolStatement",
+ "api-reference/core/TernaryExpression",
+ "api-reference/core/TryCatchStatement",
+ "api-reference/core/Tuple",
+ "api-reference/core/TupleType",
+ "api-reference/core/Type",
+ "api-reference/core/TypeAlias",
+ "api-reference/core/TypePlaceholder",
+ "api-reference/core/Typeable",
+ "api-reference/core/UnaryExpression",
+ "api-reference/core/UnionType",
+ "api-reference/core/Unpack",
+ "api-reference/core/Unwrappable",
+ "api-reference/core/Usable",
+ "api-reference/core/Usage",
+ "api-reference/core/UsageKind",
+ "api-reference/core/UsageType",
+ "api-reference/core/Value",
+ "api-reference/core/WhileStatement",
+ "api-reference/core/WithStatement"
+ ]
+ },
+ {
+ "group": "Python",
+ "icon": "python",
+ "pages": [
+ "api-reference/python/PyAssignment",
+ "api-reference/python/PyAssignmentStatement",
+ "api-reference/python/PyAttribute",
+ "api-reference/python/PyBlockStatement",
+ "api-reference/python/PyBreakStatement",
+ "api-reference/python/PyCatchStatement",
+ "api-reference/python/PyChainedAttribute",
+ "api-reference/python/PyClass",
+ "api-reference/python/PyCodeBlock",
+ "api-reference/python/PyComment",
+ "api-reference/python/PyCommentGroup",
+ "api-reference/python/PyCommentType",
+ "api-reference/python/PyConditionalExpression",
+ "api-reference/python/PyDecorator",
+ "api-reference/python/PyFile",
+ "api-reference/python/PyForLoopStatement",
+ "api-reference/python/PyFunction",
+ "api-reference/python/PyGenericType",
+ "api-reference/python/PyHasBlock",
+ "api-reference/python/PyIfBlockStatement",
+ "api-reference/python/PyImport",
+ "api-reference/python/PyImportStatement",
+ "api-reference/python/PyMatchCase",
+ "api-reference/python/PyMatchStatement",
+ "api-reference/python/PyNamedType",
+ "api-reference/python/PyParameter",
+ "api-reference/python/PyPassStatement",
+ "api-reference/python/PyReturnTypePlaceholder",
+ "api-reference/python/PyString",
+ "api-reference/python/PySymbol",
+ "api-reference/python/PyTryCatchStatement",
+ "api-reference/python/PyUnionType",
+ "api-reference/python/PyWhileStatement"
+ ]
+ },
+ {
+ "group": "Typescript",
+ "icon": "js",
+ "pages": [
+ "api-reference/typescript/JSXElement",
+ "api-reference/typescript/JSXExpression",
+ "api-reference/typescript/JSXProp",
+ "api-reference/typescript/TSArrayType",
+ "api-reference/typescript/TSAssignment",
+ "api-reference/typescript/TSAssignmentStatement",
+ "api-reference/typescript/TSAttribute",
+ "api-reference/typescript/TSBlockStatement",
+ "api-reference/typescript/TSCatchStatement",
+ "api-reference/typescript/TSChainedAttribute",
+ "api-reference/typescript/TSClass",
+ "api-reference/typescript/TSCodeBlock",
+ "api-reference/typescript/TSComment",
+ "api-reference/typescript/TSCommentGroup",
+ "api-reference/typescript/TSCommentType",
+ "api-reference/typescript/TSConditionalType",
+ "api-reference/typescript/TSConfig",
+ "api-reference/typescript/TSDecorator",
+ "api-reference/typescript/TSDict",
+ "api-reference/typescript/TSEnum",
+ "api-reference/typescript/TSExport",
+ "api-reference/typescript/TSExpressionType",
+ "api-reference/typescript/TSFile",
+ "api-reference/typescript/TSForLoopStatement",
+ "api-reference/typescript/TSFunction",
+ "api-reference/typescript/TSFunctionType",
+ "api-reference/typescript/TSGenericType",
+ "api-reference/typescript/TSHasBlock",
+ "api-reference/typescript/TSIfBlockStatement",
+ "api-reference/typescript/TSImport",
+ "api-reference/typescript/TSImportStatement",
+ "api-reference/typescript/TSInterface",
+ "api-reference/typescript/TSLabeledStatement",
+ "api-reference/typescript/TSLookupType",
+ "api-reference/typescript/TSNamedType",
+ "api-reference/typescript/TSNamespace",
+ "api-reference/typescript/TSObjectType",
+ "api-reference/typescript/TSPair",
+ "api-reference/typescript/TSParameter",
+ "api-reference/typescript/TSQueryType",
+ "api-reference/typescript/TSReadonlyType",
+ "api-reference/typescript/TSReturnTypePlaceholder",
+ "api-reference/typescript/TSString",
+ "api-reference/typescript/TSSwitchCase",
+ "api-reference/typescript/TSSwitchStatement",
+ "api-reference/typescript/TSSymbol",
+ "api-reference/typescript/TSTernaryExpression",
+ "api-reference/typescript/TSTryCatchStatement",
+ "api-reference/typescript/TSTypeAlias",
+ "api-reference/typescript/TSUndefinedType",
+ "api-reference/typescript/TSUnionType",
+ "api-reference/typescript/TSWhileStatement"
+ ]
+ }
+ ]
+ }
+ ],
+ "footerSocials": {
+ "x": "https://x.com/codegen",
+ "linkedin": "https://linkedin.com/company/codegen-dot-com"
+ }
+}
From b9162716689b906f87ee1c6ff4b6a166c5222161 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Sun, 13 Apr 2025 15:20:33 -0700
Subject: [PATCH 03/13] .
---
docs/introduction/overview.mdx | 54 +++++++---------------------------
1 file changed, 11 insertions(+), 43 deletions(-)
diff --git a/docs/introduction/overview.mdx b/docs/introduction/overview.mdx
index b2e5c590b..896c0510d 100644
--- a/docs/introduction/overview.mdx
+++ b/docs/introduction/overview.mdx
@@ -7,20 +7,18 @@ iconType: "solid"
The [Codegen SDK](https://github.com/codegen-sh/codegen-sdk) enables developers to programmatically interact with [Codegen](https://codegen.com) SWE agents.
-Go to [developer settings](https://codegen.sh/developer) to generate an API token
+
+ Go to [developer settings](https://codegen.sh/token) to generate an API token
+
```python
from codegen.agents.agent import Agent
# Initialize the Agent with your organization ID and API token
-agent = Agent(
- org_id="YOUR_ORG_ID", # Find this at codegen.com/developer
- token="YOUR_API_TOKEN", # Get this from codegen.com/developer
- # base_url="https://codegen-sh-rest-api.modal.run", # Optional - defaults to production
-)
+agent = Agent(org_id="...", token="...")
# Run an agent with a prompt
-task = agent.run(prompt="Implement a new feature to sort users by last login.")
+task = agent.run(prompt="Leave a review on PR #123")
# Check the initial status
print(task.status)
@@ -28,22 +26,16 @@ print(task.status)
# Refresh the task to get updated status (tasks can take time)
task.refresh()
-# Check the updated status
-print(task.status)
-
-# Once task is complete, you can access the result
if task.status == "completed":
print(task.result) # Result often contains code, summaries, or links
```
-
-Codegen agents can research code, create PRs, modify Linear tickets, and much more.
+ Codegen agents can research code, create PRs, modify Linear tickets, and more.
## Installation
-
Install the SDK using pip or uv:
```bash
@@ -70,12 +62,11 @@ import {
} from "/snippets/links.mdx";
-
- Follow our step-by-step tutorial to start manipulating code with Codegen.
+
+ Sign up for a free account and get your API token.
+
+
+ Get help and connect with the Codegen community.
Learn how to use Codegen for common code transformation tasks.
@@ -83,27 +74,4 @@ import {
Star us on GitHub and contribute to the project.
-
- Get help and connect with the Codegen community.
-
-
-## Why Codegen?
-
-Many software engineering tasks - refactors, enforcing patterns, analyzing control flow, etc. - are fundamentally programmatic operations. Yet the tools we use to express these transformations often feel disconnected from how we think about code.
-
-Codegen was engineered backwards from real-world refactors we performed for enterprises at [Codegen, Inc.](/introduction/about). Instead of starting with theoretical abstractions, we built the set of APIs that map directly to how humans and AI think about code changes:
-
-- **Natural Mental Model**: Express transformations through high-level operations that match how you reason about code changes, not low-level text or AST manipulation.
-- **Clean Business Logic**: Let the engine handle the complexities of imports, references, and cross-file dependencies.
-- **Scale with Confidence**: Make sweeping changes across large codebases consistently across Python, TypeScript, JavaScript, and React.
-
-As AI becomes increasingly sophisticated, we're seeing a fascinating shift: AI agents aren't bottlenecked by their ability to understand code or generate solutions. Instead, they're limited by their ability to efficiently manipulate codebases. The challenge isn't the "brain" - it's the "hands."
-
-We built Codegen with a key insight: future AI agents will need to ["act via code,"](/blog/act-via-code) building their own sophisticated tools for code manipulation. Rather than generating diffs or making direct text changes, these agents will:
-
-1. Express transformations as composable programs
-2. Build higher-level tools by combining primitive operations
-3. Create and maintain their own abstractions for common patterns
-
-This creates a shared language that both humans and AI can reason about effectively, making code changes more predictable, reviewable, and maintainable. Whether you're a developer writing a complex refactoring script or an AI agent building transformation tools, Codegen provides the foundation for expressing code changes as they should be: through code itself.
From 5e3998665d9626a6bf24562bfd50d3d4d6ae934a Mon Sep 17 00:00:00 2001
From: jayhack
Date: Sun, 13 Apr 2025 15:28:49 -0700
Subject: [PATCH 04/13] .
---
docs/introduction/faq.mdx | 66 +++--
docs/introduction/getting-started.mdx | 342 --------------------------
docs/mint.json | 97 --------
3 files changed, 32 insertions(+), 473 deletions(-)
delete mode 100644 docs/introduction/getting-started.mdx
diff --git a/docs/introduction/faq.mdx b/docs/introduction/faq.mdx
index d7f3abfba..a2accd1de 100644
--- a/docs/introduction/faq.mdx
+++ b/docs/introduction/faq.mdx
@@ -7,52 +7,50 @@ iconType: "solid"
- Codegen currently parses two languages:
- - [Python](/api-reference/python)
- - [TypeScript](/api-reference/typescript)
-
- We're actively working on expanding language support based on community needs.
-
- Learn more about how Codegen handles language specifics in the [Language
- Support](/building-with-codegen/language-support) guide.
-
-
- Interested in adding support for your language? [Let us know](https://x.com/codegen) or [contribute](/introduction/community)!
-
-
+ The Codegen AI agent leverages modern large language models (LLMs) for code
+ understanding and generation. This means it can generally handle tasks
+ involving any programming language, configuration format (like JSON, YAML),
+ documentation (like Markdown), or other text-based files that current LLMs
+ are proficient with. If you have specific needs or find limitations with a
+ particular language or format, please let us know!
-
- Pretty much! Codegen is roughly on par with `mypy` and `tsc`. There are always edge cases in static analysis that are provably impossible to get (for example doing `eval()` on a string), but all of Codegen's APIs are intended to be exact unless otherwise specified. Please reach out if you find an edge case and we will do our best to patch it.
+
+ The Codegen agent uses large language models to understand and modify code.
+ While powerful, its understanding isn't based on formal static analysis and
+ may not always be perfectly exact or catch all edge cases like a traditional
+ compiler or linter might. It aims for practical correctness based on the
+ provided context and instructions.
- Yes! Codegen was developed on multmillion-line Python and Typescript codebases
- and includes optimizations for handling large-scale transformations.
+ Yes! Codegen's agent is designed to work effectively on large, real-world
+ codebases. You can provide context and specific instructions to help it
+ navigate complex projects.
- For enterprise support, please reach out to [team@codegen.com](mailto:team@codegen.com)
+ For enterprise use cases and support, please reach out to
+ [team@codegen.com](mailto:team@codegen.com)
-
- Yes - [by design](/introduction/guiding-principles#python-first-composability).
-
- Codegen works like any other python package. It works alongside your IDE, version control system, and other development tools.
+
+ Yes. The Codegen SDK is a standard Python package (`pip install codegen`).
+ You can import and use it in your Python scripts, CI/CD pipelines, or any
+ other development tool that can execute Python code.
- Start by trying out Codegen, joining our [Slack community](https://community.codegen.com), and looking for
- issues labeled "good first issue" on [GitHub](https://github.com/codegen-sh/codegen-sdk). We welcome contributions to
- documentation, examples, and code improvements.
-
-
- Yes, Codegen is [open source](https://github.com/codegen-sh/codegen-sdk) and free to use under the [Apache 2.0
- license](https://github.com/codegen-sh/codegen-sdk?tab=Apache-2.0-1-ov-file).
- You can use it for both personal and commercial projects.
+ Start by trying out the Codegen agent and SDK, joining our [Slack
+ community](https://community.codegen.com), and reporting any issues or
+ feedback on [GitHub](https://github.com/codegen-sh/codegen-sdk). We welcome
+ contributions to documentation, examples, and SDK improvements.
- The best places to get help are:
- 1. Our community [Slack channel](https://community.codegen.com)
- 2. [GitHub issues](https://github.com/codegen-sh/codegen-sdk) for bug reports
- 3. Reach out to us on [Twitter](https://x.com/codegen)
+ The best places to get help are: 1. Our community [Slack
+ channel](https://community.codegen.com) 2. [GitHub
+ issues](https://github.com/codegen-sh/codegen-sdk) for bug reports or SDK
+ feature requests 3. Reach out to us on [Twitter](https://x.com/codegen)
diff --git a/docs/introduction/getting-started.mdx b/docs/introduction/getting-started.mdx
deleted file mode 100644
index ad9e2c5f2..000000000
--- a/docs/introduction/getting-started.mdx
+++ /dev/null
@@ -1,342 +0,0 @@
----
-title: "Getting Started"
-sidebarTitle: "Getting Started"
-icon: "bolt"
-iconType: "solid"
----
-
-A quick tour of Codegen in a Jupyter notebook.
-
-## Installation
-
-Install [codegen](https://pypi.org/project/codegen/) on Pypi via [uv](https://github.com/astral-sh/uv):
-
-```bash
-uv tool install codegen
-```
-
-## Quick Start with Jupyter
-
-The [codegen notebook](/cli/notebook) command creates a virtual environment and opens a Jupyter notebook for quick prototyping. This is often the fastest way to get up and running.
-
-```bash
-# Launch Jupyter with a demo notebook
-codegen notebook --demo
-```
-
-
-
- The `notebook --demo` comes pre-configured to load [FastAPI](https://github.com/fastapi/fastapi)'s codebase, so you can start
- exploring right away!
-
-
-
- Prefer working in your IDE? See [IDE Usage](/introduction/ide-usage)
-
-
-## Initializing a Codebase
-
-Instantiating a [Codebase](/api-reference/core/Codebase) will automatically parse a codebase and make it available for manipulation.
-
-```python
-from codegen import Codebase
-
-# Clone + parse fastapi/fastapi
-codebase = Codebase.from_repo('fastapi/fastapi')
-
-# Or, parse a local repository
-codebase = Codebase("path/to/git/repo")
-```
-
-
- This will automatically infer the programming language of the codebase and
- parse all files in the codebase. Learn more about [parsing codebases here](/building-with-codegen/parsing-codebases)
-
-
-## Exploring Your Codebase
-
-Let's explore the codebase we just initialized.
-
-Here are some common patterns for code navigation in Codegen:
-
-- Iterate over all [Functions](/api-reference/core/Function) with [Codebase.functions](/api-reference/core/Codebase#functions)
-- View class inheritance with [Class.superclasses](/api-reference/core/Class#superclasses)
-- View function usages with [Function.usages](/api-reference/core/Function#usages)
-- View inheritance hierarchies with [inheritance APIs](https://docs.codegen.com/building-with-codegen/class-api#working-with-inheritance)
-- Identify recursive functions by looking at [FunctionCalls](https://docs.codegen.com/building-with-codegen/function-calls-and-callsites)
-- View function call-sites with [Function.call_sites](/api-reference/core/Function#call-sites)
-
-```python
-# Print overall stats
-print("π Codebase Analysis")
-print("=" * 50)
-print(f"π Total Classes: {len(codebase.classes)}")
-print(f"β‘ Total Functions: {len(codebase.functions)}")
-print(f"π Total Imports: {len(codebase.imports)}")
-
-# Find class with most inheritance
-if codebase.classes:
- deepest_class = max(codebase.classes, key=lambda x: len(x.superclasses))
- print(f"\nπ³ Class with most inheritance: {deepest_class.name}")
- print(f" π Chain Depth: {len(deepest_class.superclasses)}")
- print(f" βοΈ Chain: {' -> '.join(s.name for s in deepest_class.superclasses)}")
-
-# Find first 5 recursive functions
-recursive = [f for f in codebase.functions
- if any(call.name == f.name for call in f.function_calls)][:5]
-if recursive:
- print(f"\nπ Recursive functions:")
- for func in recursive:
- print(f" - {func.name}")
-```
-
-## Analyzing Tests
-
-Let's specifically drill into large test files, which can be cumbersome to manage.
-
-```python
-from collections import Counter
-
-# Filter to all test functions and classes
-test_functions = [x for x in codebase.functions if x.name.startswith('test_')]
-test_classes = [x for x in codebase.classes if x.name.startswith('Test')]
-
-print("π§ͺ Test Analysis")
-print("=" * 50)
-print(f"π Total Test Functions: {len(test_functions)}")
-print(f"π¬ Total Test Classes: {len(test_classes)}")
-print(f"π Tests per File: {len(test_functions) / len(codebase.files):.1f}")
-
-# Find files with the most tests
-print("\nπ Top Test Files by Class Count")
-print("-" * 50)
-file_test_counts = Counter([x.file for x in test_classes])
-for file, num_tests in file_test_counts.most_common()[:5]:
- print(f"π {num_tests} test classes: {file.filepath}")
- print(f" π File Length: {len(file.source)} lines")
- print(f" π‘ Functions: {len(file.functions)}")
-```
-
-## Splitting Up Large Test Files
-
-Lets split up the largest test files into separate modules for better organization.
-
-This uses Codegen's [codebase.move_to_file(...)](/building-with-codegen/moving-symbols), which will:
-- update all imports
-- (optionally) move dependencies
-- do so very fast β‘οΈ
-
-While maintaining correctness.
-
-```python
-filename = 'tests/test_path.py'
-print(f"π¦ Splitting Test File: {filename}")
-print("=" * 50)
-
-# Grab a file
-file = codebase.get_file(filename)
-base_name = filename.replace('.py', '')
-
-# Group tests by subpath
-test_groups = {}
-for test_function in file.functions:
- if test_function.name.startswith('test_'):
- test_subpath = '_'.join(test_function.name.split('_')[:3])
- if test_subpath not in test_groups:
- test_groups[test_subpath] = []
- test_groups[test_subpath].append(test_function)
-
-# Print and process each group
-for subpath, tests in test_groups.items():
- print(f"\\n{subpath}/")
- new_filename = f"{base_name}/{subpath}.py"
-
- # Create file if it doesn't exist
- if not codebase.has_file(new_filename):
- new_file = codebase.create_file(new_filename)
- file = codebase.get_file(new_filename)
-
- # Move each test in the group
- for test_function in tests:
- print(f" - {test_function.name}")
- test_function.move_to_file(new_file, strategy="add_back_edge")
-
-# Commit changes to disk
-codebase.commit()
-```
-
-
- In order to commit changes to your filesystem, you must call
- [codebase.commit()](/api-reference/core/Codebase#commit). Learn more about
- [commit() and reset()](/building-with-codegen/commit-and-reset).
-
-
-### Finding Specific Content
-
-Once you have a general sense of your codebase, you can filter down to exactly what you're looking for. Codegen's graph structure makes it straightforward and performant to find and traverse specific code elements:
-
-```python
-# Grab specific content by name
-my_resource = codebase.get_symbol('TestResource')
-
-# Find classes that inherit from a specific base
-resource_classes = [
- cls for cls in codebase.classes
- if cls.is_subclass_of('Resource')
-]
-
-# Find functions with specific decorators
-test_functions = [
- f for f in codebase.functions
- if any('pytest' in d.source for d in f.decorators)
-]
-
-# Find files matching certain patterns
-test_files = [
- f for f in codebase.files
- if f.name.startswith('test_')
-]
-```
-
-## Safe Code Transformations
-
-Codegen guarantees that code transformations maintain correctness. It automatically handles updating imports, references, and dependencies. Here are some common transformations:
-
-```python
-# Move all Enum classes to a dedicated file
-for cls in codebase.classes:
- if cls.is_subclass_of('Enum'):
- # Codegen automatically:
- # - Updates all imports that reference this class
- # - Maintains the class's dependencies
- # - Preserves comments and decorators
- # - Generally performs this in a sane manner
- cls.move_to_file(f'enums.py')
-
-# Rename a function and all its usages
-old_function = codebase.get_function('process_data')
-old_function.rename('process_resource') # Updates all references automatically
-
-# Change a function's signature
-handler = codebase.get_function('event_handler')
-handler.get_parameter('e').rename('event') # Automatically updates all call-sites
-handler.add_parameter('timeout: int = 30') # Handles formatting and edge cases
-handler.add_return_type('Response | None')
-
-# Perform surgery on call-sites
-for fcall in handler.call_sites:
- arg = fcall.get_arg_by_parameter_name('env')
- # f(..., env={ data: x }) => f(..., env={ data: x or None })
- if isinstance(arg.value, Collection):
- data_key = arg.value.get('data')
- data_key.value.edit(f'{data_key.value} or None')
-```
-
-
- When moving symbols, Codegen will automatically update all imports and
- references. See [Moving Symbols](/building-with-codegen/moving-symbols) to
- learn more.
-
-
-## Leveraging Graph Relations
-
-Codegen's graph structure makes it easy to analyze relationships between code elements across files:
-
-```python
-# Find dead code
-for func in codebase.functions:
- if len(func.usages) == 0:
- print(f'ποΈ Dead code: {func.name}')
- func.remove()
-
-# Analyze import relationships
-file = codebase.get_file('api/endpoints.py')
-print("\nFiles that import endpoints.py:")
-for import_stmt in file.inbound_imports:
- print(f" {import_stmt.file.path}")
-
-print("\nFiles that endpoints.py imports:")
-for import_stmt in file.imports:
- if import_stmt.resolved_symbol:
- print(f" {import_stmt.resolved_symbol.file.path}")
-
-# Explore class hierarchies
-base_class = codebase.get_class('BaseModel')
-if base_class:
- print(f"\nClasses that inherit from {base_class.name}:")
- for subclass in base_class.subclasses:
- print(f" {subclass.name}")
- # We can go deeper in the inheritance tree
- for sub_subclass in subclass.subclasses:
- print(f" ββ {sub_subclass.name}")
-```
-
-
- Learn more about [dependencies and
- references](/building-with-codegen/dependencies-and-usages) or [imports](/building-with-codegen/imports) and [exports](/building-with-codegen/exports).
-
-
-## Advanced Settings
-
-Codegen also supports a number of advanced settings that can be used to customize the behavior of the graph construction process.
-
-These flags are helpful for debugging problematic repos, optimizing Codegenβs performance, or testing unreleased or experimental (potentially backwards-breaking) features.
-
-```python
-from codegen import Codebase
-from codegen.configs import CodebaseConfig
-
-# Initialize a Codebase with custom configuration
-codebase = Codebase(
- "path/to/git/repo"",
- config=CodebaseConfig(
- verify_graph=True,
- method_usages=False,
- sync_enabled=True,
- generics=False,
- import_resolution_overrides={
- "old_module": "new_module"
- },
- ts_language_engine=True,
- v8_ts_engine=True
- )
-)
-```
-
-To learn more about available settings, see the [Advanced Settings](/introduction/advanced-settings) page.
-
-
-These are considered experimental and unstable features that may be removed or changed in the future.
-
-
-## What's Next?
-
-
-
- Follow step-by-step tutorials for common code transformation tasks like
- modernizing React codebases or migrating APIs.
-
-
- Understand key concepts like working with files, functions, imports, and the
- call graph to effectively manipulate code.
-
-
- Iterate locally with your favorite IDE, work with a debugger and build sophisticated codemods
-
-
- Learn how to use Codegen with Cursor, Devin, Windsurf, and more.
-
-
-
diff --git a/docs/mint.json b/docs/mint.json
index 7822595ff..e37911ccd 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -71,103 +71,15 @@
"group": "Introduction",
"pages": [
"introduction/overview",
- "introduction/getting-started",
- "introduction/installation",
- "introduction/ide-usage",
- "introduction/work-with-ai",
- "introduction/how-it-works",
- "introduction/advanced-settings",
- "introduction/guiding-principles",
"introduction/community",
"introduction/about",
"introduction/faq"
]
},
- {
- "group": "Tutorials",
- "pages": [
- "tutorials/at-a-glance",
- "tutorials/build-code-agent",
- "tutorials/slack-bot",
- "tutorials/github-review-bot",
- "tutorials/deep-code-research",
- "tutorials/codebase-analytics-dashboard",
- "tutorials/training-data",
- "tutorials/codebase-visualization",
- "tutorials/migrating-apis",
- "tutorials/organize-your-codebase",
- "tutorials/promise-to-async-await",
- "tutorials/modularity",
- "tutorials/manage-feature-flags",
- "tutorials/deleting-dead-code",
- "tutorials/increase-type-coverage",
- "tutorials/managing-typescript-exports",
- "tutorials/converting-default-exports",
- "tutorials/creating-documentation",
- "tutorials/react-modernization",
- "tutorials/unittest-to-pytest",
- "tutorials/sqlalchemy-1.6-to-2.0",
- "tutorials/fixing-import-loops-in-pytorch",
- "tutorials/python2-to-python3",
- "tutorials/flask-to-fastapi",
- "tutorials/build-mcp",
- "tutorials/neo4j-graph",
- "tutorials/attributions"
- ]
- },
- {
- "group": "Building with Codegen",
- "pages": [
- "building-with-codegen/at-a-glance",
- "building-with-codegen/parsing-codebases",
- "building-with-codegen/reusable-codemods",
- "building-with-codegen/dot-codegen",
- "building-with-codegen/function-decorator",
- "building-with-codegen/language-support",
- "building-with-codegen/commit-and-reset",
- "building-with-codegen/git-operations",
- "building-with-codegen/files-and-directories",
- "building-with-codegen/the-editable-api",
- "building-with-codegen/symbol-api",
- "building-with-codegen/class-api",
- "building-with-codegen/imports",
- "building-with-codegen/exports",
- "building-with-codegen/inheritable-behaviors",
- "building-with-codegen/statements-and-code-blocks",
- "building-with-codegen/dependencies-and-usages",
- "building-with-codegen/function-calls-and-callsites",
- "building-with-codegen/variable-assignments",
- "building-with-codegen/local-variables",
- "building-with-codegen/comments-and-docstrings",
- "building-with-codegen/external-modules",
- "building-with-codegen/type-annotations",
- "building-with-codegen/moving-symbols",
- "building-with-codegen/collections",
- "building-with-codegen/traversing-the-call-graph",
- "building-with-codegen/react-and-jsx",
- "building-with-codegen/codebase-visualization",
- "building-with-codegen/flagging-symbols",
- "building-with-codegen/calling-out-to-llms",
- "building-with-codegen/semantic-code-search",
- "building-with-codegen/reducing-conditions"
- ]
- },
{
"group": "Changelog",
"pages": ["changelog/changelog"]
},
- {
- "group": "CLI",
- "pages": [
- "cli/about",
- "cli/init",
- "cli/notebook",
- "cli/create",
- "cli/run",
- "cli/reset",
- "cli/expert"
- ]
- },
{
"group": "Blog",
"pages": [
@@ -178,15 +90,6 @@
"blog/fixing-import-loops"
]
},
- {
- "group": "codegen",
- "pages": [
- "gen/introduction",
- "gen/capabilities",
- "gen/integrations",
- "gen/faq"
- ]
- },
{
"group": "API Reference",
"pages": [
From d71daf769eebf174a59b1dcb607e42b7cbc91aa9 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Sun, 13 Apr 2025 15:30:55 -0700
Subject: [PATCH 05/13] .
---
docs/introduction/overview.mdx | 2 +-
docs/mint.json | 199 ---------------------------------
2 files changed, 1 insertion(+), 200 deletions(-)
diff --git a/docs/introduction/overview.mdx b/docs/introduction/overview.mdx
index 896c0510d..de5d48396 100644
--- a/docs/introduction/overview.mdx
+++ b/docs/introduction/overview.mdx
@@ -5,7 +5,7 @@ icon: "code"
iconType: "solid"
---
-The [Codegen SDK](https://github.com/codegen-sh/codegen-sdk) enables developers to programmatically interact with [Codegen](https://codegen.com) SWE agents.
+The [Codegen SDK](https://github.com/codegen-sh/codegen-sdk) enables developers to programmatically interact with [Codegen](https://codegen.com) SWE agents via API.
Go to [developer settings](https://codegen.sh/token) to generate an API token
diff --git a/docs/mint.json b/docs/mint.json
index e37911ccd..628dcd411 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -89,205 +89,6 @@
"blog/promise-to-async-await-twilio",
"blog/fixing-import-loops"
]
- },
- {
- "group": "API Reference",
- "pages": [
- "api-reference/index",
- {
- "group": "Core",
- "icon": "code",
- "pages": [
- "api-reference/core/Argument",
- "api-reference/core/Assignment",
- "api-reference/core/AssignmentStatement",
- "api-reference/core/Attribute",
- "api-reference/core/AwaitExpression",
- "api-reference/core/BinaryExpression",
- "api-reference/core/BlockStatement",
- "api-reference/core/Boolean",
- "api-reference/core/Callable",
- "api-reference/core/CatchStatement",
- "api-reference/core/ChainedAttribute",
- "api-reference/core/Class",
- "api-reference/core/CodeBlock",
- "api-reference/core/CodeOwner",
- "api-reference/core/Codebase",
- "api-reference/core/Comment",
- "api-reference/core/CommentGroup",
- "api-reference/core/ComparisonExpression",
- "api-reference/core/Decorator",
- "api-reference/core/Dict",
- "api-reference/core/Directory",
- "api-reference/core/Editable",
- "api-reference/core/Export",
- "api-reference/core/ExportStatement",
- "api-reference/core/Exportable",
- "api-reference/core/Expression",
- "api-reference/core/ExpressionGroup",
- "api-reference/core/ExpressionStatement",
- "api-reference/core/ExternalModule",
- "api-reference/core/File",
- "api-reference/core/FlagKwargs",
- "api-reference/core/ForLoopStatement",
- "api-reference/core/Function",
- "api-reference/core/FunctionCall",
- "api-reference/core/GenericType",
- "api-reference/core/HasBlock",
- "api-reference/core/HasName",
- "api-reference/core/HasValue",
- "api-reference/core/IfBlockStatement",
- "api-reference/core/Import",
- "api-reference/core/ImportStatement",
- "api-reference/core/ImportType",
- "api-reference/core/Importable",
- "api-reference/core/Interface",
- "api-reference/core/List",
- "api-reference/core/MessageType",
- "api-reference/core/MultiExpression",
- "api-reference/core/MultiLineCollection",
- "api-reference/core/Name",
- "api-reference/core/NamedType",
- "api-reference/core/NoneType",
- "api-reference/core/Number",
- "api-reference/core/Pair",
- "api-reference/core/Parameter",
- "api-reference/core/ParenthesizedExpression",
- "api-reference/core/Placeholder",
- "api-reference/core/PlaceholderType",
- "api-reference/core/RaiseStatement",
- "api-reference/core/ReturnStatement",
- "api-reference/core/SourceFile",
- "api-reference/core/Span",
- "api-reference/core/Statement",
- "api-reference/core/StatementType",
- "api-reference/core/String",
- "api-reference/core/StubPlaceholder",
- "api-reference/core/SubscriptExpression",
- "api-reference/core/SwitchCase",
- "api-reference/core/SwitchStatement",
- "api-reference/core/Symbol",
- "api-reference/core/SymbolGroup",
- "api-reference/core/SymbolStatement",
- "api-reference/core/TernaryExpression",
- "api-reference/core/TryCatchStatement",
- "api-reference/core/Tuple",
- "api-reference/core/TupleType",
- "api-reference/core/Type",
- "api-reference/core/TypeAlias",
- "api-reference/core/TypePlaceholder",
- "api-reference/core/Typeable",
- "api-reference/core/UnaryExpression",
- "api-reference/core/UnionType",
- "api-reference/core/Unpack",
- "api-reference/core/Unwrappable",
- "api-reference/core/Usable",
- "api-reference/core/Usage",
- "api-reference/core/UsageKind",
- "api-reference/core/UsageType",
- "api-reference/core/Value",
- "api-reference/core/WhileStatement",
- "api-reference/core/WithStatement"
- ]
- },
- {
- "group": "Python",
- "icon": "python",
- "pages": [
- "api-reference/python/PyAssignment",
- "api-reference/python/PyAssignmentStatement",
- "api-reference/python/PyAttribute",
- "api-reference/python/PyBlockStatement",
- "api-reference/python/PyBreakStatement",
- "api-reference/python/PyCatchStatement",
- "api-reference/python/PyChainedAttribute",
- "api-reference/python/PyClass",
- "api-reference/python/PyCodeBlock",
- "api-reference/python/PyComment",
- "api-reference/python/PyCommentGroup",
- "api-reference/python/PyCommentType",
- "api-reference/python/PyConditionalExpression",
- "api-reference/python/PyDecorator",
- "api-reference/python/PyFile",
- "api-reference/python/PyForLoopStatement",
- "api-reference/python/PyFunction",
- "api-reference/python/PyGenericType",
- "api-reference/python/PyHasBlock",
- "api-reference/python/PyIfBlockStatement",
- "api-reference/python/PyImport",
- "api-reference/python/PyImportStatement",
- "api-reference/python/PyMatchCase",
- "api-reference/python/PyMatchStatement",
- "api-reference/python/PyNamedType",
- "api-reference/python/PyParameter",
- "api-reference/python/PyPassStatement",
- "api-reference/python/PyReturnTypePlaceholder",
- "api-reference/python/PyString",
- "api-reference/python/PySymbol",
- "api-reference/python/PyTryCatchStatement",
- "api-reference/python/PyUnionType",
- "api-reference/python/PyWhileStatement"
- ]
- },
- {
- "group": "Typescript",
- "icon": "js",
- "pages": [
- "api-reference/typescript/JSXElement",
- "api-reference/typescript/JSXExpression",
- "api-reference/typescript/JSXProp",
- "api-reference/typescript/TSArrayType",
- "api-reference/typescript/TSAssignment",
- "api-reference/typescript/TSAssignmentStatement",
- "api-reference/typescript/TSAttribute",
- "api-reference/typescript/TSBlockStatement",
- "api-reference/typescript/TSCatchStatement",
- "api-reference/typescript/TSChainedAttribute",
- "api-reference/typescript/TSClass",
- "api-reference/typescript/TSCodeBlock",
- "api-reference/typescript/TSComment",
- "api-reference/typescript/TSCommentGroup",
- "api-reference/typescript/TSCommentType",
- "api-reference/typescript/TSConditionalType",
- "api-reference/typescript/TSConfig",
- "api-reference/typescript/TSDecorator",
- "api-reference/typescript/TSDict",
- "api-reference/typescript/TSEnum",
- "api-reference/typescript/TSExport",
- "api-reference/typescript/TSExpressionType",
- "api-reference/typescript/TSFile",
- "api-reference/typescript/TSForLoopStatement",
- "api-reference/typescript/TSFunction",
- "api-reference/typescript/TSFunctionType",
- "api-reference/typescript/TSGenericType",
- "api-reference/typescript/TSHasBlock",
- "api-reference/typescript/TSIfBlockStatement",
- "api-reference/typescript/TSImport",
- "api-reference/typescript/TSImportStatement",
- "api-reference/typescript/TSInterface",
- "api-reference/typescript/TSLabeledStatement",
- "api-reference/typescript/TSLookupType",
- "api-reference/typescript/TSNamedType",
- "api-reference/typescript/TSNamespace",
- "api-reference/typescript/TSObjectType",
- "api-reference/typescript/TSPair",
- "api-reference/typescript/TSParameter",
- "api-reference/typescript/TSQueryType",
- "api-reference/typescript/TSReadonlyType",
- "api-reference/typescript/TSReturnTypePlaceholder",
- "api-reference/typescript/TSString",
- "api-reference/typescript/TSSwitchCase",
- "api-reference/typescript/TSSwitchStatement",
- "api-reference/typescript/TSSymbol",
- "api-reference/typescript/TSTernaryExpression",
- "api-reference/typescript/TSTryCatchStatement",
- "api-reference/typescript/TSTypeAlias",
- "api-reference/typescript/TSUndefinedType",
- "api-reference/typescript/TSUnionType",
- "api-reference/typescript/TSWhileStatement"
- ]
- }
- ]
}
],
"footerSocials": {
From 6f852848c309ee59ea4dbb03e5685b596003af94 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Sun, 13 Apr 2025 15:31:32 -0700
Subject: [PATCH 06/13] .
---
docs/introduction/overview.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/introduction/overview.mdx b/docs/introduction/overview.mdx
index de5d48396..8e945f419 100644
--- a/docs/introduction/overview.mdx
+++ b/docs/introduction/overview.mdx
@@ -12,7 +12,7 @@ The [Codegen SDK](https://github.com/codegen-sh/codegen-sdk) enables developers
```python
-from codegen.agents.agent import Agent
+from codegen import Agent
# Initialize the Agent with your organization ID and API token
agent = Agent(org_id="...", token="...")
From fa98f5110959b2eadc5d88a0cc679302d8a25c79 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Sun, 13 Apr 2025 15:39:24 -0700
Subject: [PATCH 07/13] .
---
docs/mint.json | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/docs/mint.json b/docs/mint.json
index 628dcd411..091a684a7 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -47,12 +47,9 @@
"tabs": [
{
"name": "API Reference",
+ "openapi": "https://codegen-sh--rest-api.modal.run/api/openapi.json",
"url": "/api-reference"
},
- {
- "name": "CLI",
- "url": "/cli"
- },
{
"name": "Blog",
"url": "/blog"
From 2c3cc5d989f4c2dc148d5277762fab5076e37689 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Mon, 14 Apr 2025 15:43:59 -0700
Subject: [PATCH 08/13] .
---
docs/{ => _deprecated}/api-reference/core/Argument.mdx | 0
docs/{ => _deprecated}/api-reference/core/Assignment.mdx | 0
docs/{ => _deprecated}/api-reference/core/AssignmentStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/Attribute.mdx | 0
docs/{ => _deprecated}/api-reference/core/AwaitExpression.mdx | 0
docs/{ => _deprecated}/api-reference/core/BinaryExpression.mdx | 0
docs/{ => _deprecated}/api-reference/core/BlockStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/Boolean.mdx | 0
docs/{ => _deprecated}/api-reference/core/Callable.mdx | 0
docs/{ => _deprecated}/api-reference/core/CatchStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/ChainedAttribute.mdx | 0
docs/{ => _deprecated}/api-reference/core/Class.mdx | 0
docs/{ => _deprecated}/api-reference/core/CodeBlock.mdx | 0
docs/{ => _deprecated}/api-reference/core/CodeOwner.mdx | 0
docs/{ => _deprecated}/api-reference/core/Codebase.mdx | 0
docs/{ => _deprecated}/api-reference/core/Comment.mdx | 0
docs/{ => _deprecated}/api-reference/core/CommentGroup.mdx | 0
.../{ => _deprecated}/api-reference/core/ComparisonExpression.mdx | 0
docs/{ => _deprecated}/api-reference/core/Decorator.mdx | 0
docs/{ => _deprecated}/api-reference/core/Dict.mdx | 0
docs/{ => _deprecated}/api-reference/core/Directory.mdx | 0
docs/{ => _deprecated}/api-reference/core/Editable.mdx | 0
docs/{ => _deprecated}/api-reference/core/Export.mdx | 0
docs/{ => _deprecated}/api-reference/core/ExportStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/Exportable.mdx | 0
docs/{ => _deprecated}/api-reference/core/Expression.mdx | 0
docs/{ => _deprecated}/api-reference/core/ExpressionGroup.mdx | 0
docs/{ => _deprecated}/api-reference/core/ExpressionStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/ExternalModule.mdx | 0
docs/{ => _deprecated}/api-reference/core/File.mdx | 0
docs/{ => _deprecated}/api-reference/core/FlagKwargs.mdx | 0
docs/{ => _deprecated}/api-reference/core/ForLoopStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/Function.mdx | 0
docs/{ => _deprecated}/api-reference/core/FunctionCall.mdx | 0
docs/{ => _deprecated}/api-reference/core/GenericType.mdx | 0
docs/{ => _deprecated}/api-reference/core/HasBlock.mdx | 0
docs/{ => _deprecated}/api-reference/core/HasName.mdx | 0
docs/{ => _deprecated}/api-reference/core/HasValue.mdx | 0
docs/{ => _deprecated}/api-reference/core/IfBlockStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/Import.mdx | 0
docs/{ => _deprecated}/api-reference/core/ImportStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/ImportType.mdx | 0
docs/{ => _deprecated}/api-reference/core/Importable.mdx | 0
docs/{ => _deprecated}/api-reference/core/Interface.mdx | 0
docs/{ => _deprecated}/api-reference/core/List.mdx | 0
docs/{ => _deprecated}/api-reference/core/MessageType.mdx | 0
docs/{ => _deprecated}/api-reference/core/MultiExpression.mdx | 0
docs/{ => _deprecated}/api-reference/core/MultiLineCollection.mdx | 0
docs/{ => _deprecated}/api-reference/core/Name.mdx | 0
docs/{ => _deprecated}/api-reference/core/NamedType.mdx | 0
docs/{ => _deprecated}/api-reference/core/NoneType.mdx | 0
docs/{ => _deprecated}/api-reference/core/Number.mdx | 0
docs/{ => _deprecated}/api-reference/core/Pair.mdx | 0
docs/{ => _deprecated}/api-reference/core/Parameter.mdx | 0
.../api-reference/core/ParenthesizedExpression.mdx | 0
docs/{ => _deprecated}/api-reference/core/Placeholder.mdx | 0
docs/{ => _deprecated}/api-reference/core/PlaceholderType.mdx | 0
docs/{ => _deprecated}/api-reference/core/RaiseStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/ReturnStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/SourceFile.mdx | 0
docs/{ => _deprecated}/api-reference/core/Span.mdx | 0
docs/{ => _deprecated}/api-reference/core/Statement.mdx | 0
docs/{ => _deprecated}/api-reference/core/StatementType.mdx | 0
docs/{ => _deprecated}/api-reference/core/String.mdx | 0
docs/{ => _deprecated}/api-reference/core/StubPlaceholder.mdx | 0
docs/{ => _deprecated}/api-reference/core/SubscriptExpression.mdx | 0
docs/{ => _deprecated}/api-reference/core/SwitchCase.mdx | 0
docs/{ => _deprecated}/api-reference/core/SwitchStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/Symbol.mdx | 0
docs/{ => _deprecated}/api-reference/core/SymbolGroup.mdx | 0
docs/{ => _deprecated}/api-reference/core/SymbolStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/TernaryExpression.mdx | 0
docs/{ => _deprecated}/api-reference/core/TryCatchStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/Tuple.mdx | 0
docs/{ => _deprecated}/api-reference/core/TupleType.mdx | 0
docs/{ => _deprecated}/api-reference/core/Type.mdx | 0
docs/{ => _deprecated}/api-reference/core/TypeAlias.mdx | 0
docs/{ => _deprecated}/api-reference/core/TypePlaceholder.mdx | 0
docs/{ => _deprecated}/api-reference/core/Typeable.mdx | 0
docs/{ => _deprecated}/api-reference/core/UnaryExpression.mdx | 0
docs/{ => _deprecated}/api-reference/core/UnionType.mdx | 0
docs/{ => _deprecated}/api-reference/core/Unpack.mdx | 0
docs/{ => _deprecated}/api-reference/core/Unwrappable.mdx | 0
docs/{ => _deprecated}/api-reference/core/Usable.mdx | 0
docs/{ => _deprecated}/api-reference/core/Usage.mdx | 0
docs/{ => _deprecated}/api-reference/core/UsageKind.mdx | 0
docs/{ => _deprecated}/api-reference/core/UsageType.mdx | 0
docs/{ => _deprecated}/api-reference/core/Value.mdx | 0
docs/{ => _deprecated}/api-reference/core/WhileStatement.mdx | 0
docs/{ => _deprecated}/api-reference/core/WithStatement.mdx | 0
docs/{ => _deprecated}/api-reference/index.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyAssignment.mdx | 0
.../api-reference/python/PyAssignmentStatement.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyAttribute.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyBlockStatement.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyBreakStatement.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyCatchStatement.mdx | 0
.../{ => _deprecated}/api-reference/python/PyChainedAttribute.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyClass.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyCodeBlock.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyComment.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyCommentGroup.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyCommentType.mdx | 0
.../api-reference/python/PyConditionalExpression.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyDecorator.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyFile.mdx | 0
.../{ => _deprecated}/api-reference/python/PyForLoopStatement.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyFunction.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyGenericType.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyHasBlock.mdx | 0
.../{ => _deprecated}/api-reference/python/PyIfBlockStatement.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyImport.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyImportStatement.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyMatchCase.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyMatchStatement.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyNamedType.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyParameter.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyPassStatement.mdx | 0
.../api-reference/python/PyReturnTypePlaceholder.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyString.mdx | 0
docs/{ => _deprecated}/api-reference/python/PySymbol.mdx | 0
.../api-reference/python/PyTryCatchStatement.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyUnionType.mdx | 0
docs/{ => _deprecated}/api-reference/python/PyWhileStatement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/JSXElement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/JSXExpression.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/JSXProp.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSArrayType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSAssignment.mdx | 0
.../api-reference/typescript/TSAssignmentStatement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSAttribute.mdx | 0
.../api-reference/typescript/TSBlockStatement.mdx | 0
.../api-reference/typescript/TSCatchStatement.mdx | 0
.../api-reference/typescript/TSChainedAttribute.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSClass.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSCodeBlock.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSComment.mdx | 0
.../{ => _deprecated}/api-reference/typescript/TSCommentGroup.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSCommentType.mdx | 0
.../api-reference/typescript/TSConditionalType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSConfig.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSDecorator.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSDict.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSEnum.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSExport.mdx | 0
.../api-reference/typescript/TSExpressionType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSFile.mdx | 0
.../api-reference/typescript/TSForLoopStatement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSFunction.mdx | 0
.../{ => _deprecated}/api-reference/typescript/TSFunctionType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSGenericType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSHasBlock.mdx | 0
.../api-reference/typescript/TSIfBlockStatement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSImport.mdx | 0
.../api-reference/typescript/TSImportStatement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSInterface.mdx | 0
.../api-reference/typescript/TSLabeledStatement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSLookupType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSNamedType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSNamespace.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSObjectType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSPair.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSParameter.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSQueryType.mdx | 0
.../{ => _deprecated}/api-reference/typescript/TSReadonlyType.mdx | 0
.../api-reference/typescript/TSReturnTypePlaceholder.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSString.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSSwitchCase.mdx | 0
.../api-reference/typescript/TSSwitchStatement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSSymbol.mdx | 0
.../api-reference/typescript/TSTernaryExpression.mdx | 0
.../api-reference/typescript/TSTryCatchStatement.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSTypeAlias.mdx | 0
.../api-reference/typescript/TSUndefinedType.mdx | 0
docs/{ => _deprecated}/api-reference/typescript/TSUnionType.mdx | 0
.../api-reference/typescript/TSWhileStatement.mdx | 0
docs/{ => _deprecated}/building-with-codegen/at-a-glance.mdx | 0
.../building-with-codegen/calling-out-to-llms.mdx | 0
docs/{ => _deprecated}/building-with-codegen/class-api.mdx | 0
.../building-with-codegen/codebase-visualization.mdx | 0
docs/{ => _deprecated}/building-with-codegen/codegen-with-wsl.mdx | 0
docs/{ => _deprecated}/building-with-codegen/collections.mdx | 0
.../building-with-codegen/comments-and-docstrings.mdx | 0
docs/{ => _deprecated}/building-with-codegen/commit-and-reset.mdx | 0
.../building-with-codegen/dependencies-and-usages.mdx | 0
docs/{ => _deprecated}/building-with-codegen/dot-codegen.mdx | 0
.../building-with-codegen/editables-and-behaviors.mdx | 0
docs/{ => _deprecated}/building-with-codegen/exports.mdx | 0
docs/{ => _deprecated}/building-with-codegen/external-modules.mdx | 0
.../building-with-codegen/files-and-directories.mdx | 0
docs/{ => _deprecated}/building-with-codegen/flagging-symbols.mdx | 0
.../building-with-codegen/function-calls-and-callsites.mdx | 0
.../building-with-codegen/function-decorator.mdx | 0
docs/{ => _deprecated}/building-with-codegen/git-operations.mdx | 0
docs/{ => _deprecated}/building-with-codegen/imports.mdx | 0
.../building-with-codegen/inheritable-behaviors.mdx | 0
docs/{ => _deprecated}/building-with-codegen/language-support.mdx | 0
docs/{ => _deprecated}/building-with-codegen/local-variables.mdx | 0
docs/{ => _deprecated}/building-with-codegen/moving-symbols.mdx | 0
.../{ => _deprecated}/building-with-codegen/parsing-codebases.mdx | 0
docs/{ => _deprecated}/building-with-codegen/react-and-jsx.mdx | 0
.../building-with-codegen/reducing-conditions.mdx | 0
.../{ => _deprecated}/building-with-codegen/reusable-codemods.mdx | 0
.../building-with-codegen/semantic-code-search.mdx | 0
.../building-with-codegen/statements-and-code-blocks.mdx | 0
docs/{ => _deprecated}/building-with-codegen/symbol-api.mdx | 0
docs/{ => _deprecated}/building-with-codegen/the-editable-api.mdx | 0
.../building-with-codegen/traversing-the-call-graph.mdx | 0
docs/{ => _deprecated}/building-with-codegen/type-annotations.mdx | 0
.../building-with-codegen/variable-assignments.mdx | 0
docs/{ => _deprecated}/cli/about.mdx | 0
docs/{ => _deprecated}/cli/create.mdx | 0
docs/{ => _deprecated}/cli/expert.mdx | 0
docs/{ => _deprecated}/cli/init.mdx | 0
docs/{ => _deprecated}/cli/login.mdx | 0
docs/{ => _deprecated}/cli/notebook.mdx | 0
docs/{ => _deprecated}/cli/reset.mdx | 0
docs/{ => _deprecated}/cli/run.mdx | 0
docs/{ => _deprecated}/cli/update.mdx | 0
docs/{ => _deprecated}/graph-sitter/about.mdx | 0
docs/{ => _deprecated}/graph-sitter/advanced-settings.mdx | 0
docs/{ => _deprecated}/graph-sitter/community.mdx | 0
docs/{ => _deprecated}/graph-sitter/faq.mdx | 0
docs/{ => _deprecated}/graph-sitter/getting-started.mdx | 0
docs/{ => _deprecated}/graph-sitter/guiding-principles.mdx | 0
docs/{ => _deprecated}/graph-sitter/how-it-works.mdx | 0
docs/{ => _deprecated}/graph-sitter/ide-usage.mdx | 0
docs/{ => _deprecated}/graph-sitter/installation.mdx | 0
docs/{ => _deprecated}/graph-sitter/overview.mdx | 0
docs/{ => _deprecated}/graph-sitter/work-with-ai.mdx | 0
docs/{ => _deprecated}/tutorials/at-a-glance.mdx | 0
docs/{ => _deprecated}/tutorials/attributions.mdx | 0
docs/{ => _deprecated}/tutorials/build-mcp.mdx | 0
docs/{ => _deprecated}/tutorials/codebase-analytics-dashboard.mdx | 0
docs/{ => _deprecated}/tutorials/codebase-visualization.mdx | 0
docs/{ => _deprecated}/tutorials/converting-default-exports.mdx | 0
docs/{ => _deprecated}/tutorials/creating-documentation.mdx | 0
docs/{ => _deprecated}/tutorials/deep-code-research.mdx | 0
docs/{ => _deprecated}/tutorials/deleting-dead-code.mdx | 0
.../tutorials/fixing-import-loops-in-pytorch.mdx | 0
docs/{ => _deprecated}/tutorials/flask-to-fastapi.mdx | 0
docs/{ => _deprecated}/tutorials/increase-type-coverage.mdx | 0
docs/{ => _deprecated}/tutorials/manage-feature-flags.mdx | 0
docs/{ => _deprecated}/tutorials/managing-typescript-exports.mdx | 0
docs/{ => _deprecated}/tutorials/migrating-apis.mdx | 0
docs/{ => _deprecated}/tutorials/modularity.mdx | 0
docs/{ => _deprecated}/tutorials/neo4j-graph.mdx | 0
docs/{ => _deprecated}/tutorials/organize-your-codebase.mdx | 0
.../tutorials/preparing-your-codebase-for-ai.mdx | 0
docs/{ => _deprecated}/tutorials/promise-to-async-await.mdx | 0
docs/{ => _deprecated}/tutorials/python2-to-python3.mdx | 0
docs/{ => _deprecated}/tutorials/react-modernization.mdx | 0
docs/{ => _deprecated}/tutorials/slack-bot.mdx | 0
docs/{ => _deprecated}/tutorials/sqlalchemy-1.6-to-2.0.mdx | 0
docs/{ => _deprecated}/tutorials/training-data.mdx | 0
docs/{ => _deprecated}/tutorials/unittest-to-pytest.mdx | 0
256 files changed, 0 insertions(+), 0 deletions(-)
rename docs/{ => _deprecated}/api-reference/core/Argument.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Assignment.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/AssignmentStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Attribute.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/AwaitExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/BinaryExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/BlockStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Boolean.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Callable.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/CatchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ChainedAttribute.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Class.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/CodeBlock.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/CodeOwner.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Codebase.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Comment.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/CommentGroup.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ComparisonExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Decorator.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Dict.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Directory.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Editable.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Export.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ExportStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Exportable.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Expression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ExpressionGroup.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ExpressionStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ExternalModule.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/File.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/FlagKwargs.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ForLoopStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Function.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/FunctionCall.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/GenericType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/HasBlock.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/HasName.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/HasValue.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/IfBlockStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Import.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ImportStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ImportType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Importable.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Interface.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/List.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/MessageType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/MultiExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/MultiLineCollection.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Name.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/NamedType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/NoneType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Number.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Pair.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Parameter.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ParenthesizedExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Placeholder.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/PlaceholderType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/RaiseStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/ReturnStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/SourceFile.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Span.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Statement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/StatementType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/String.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/StubPlaceholder.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/SubscriptExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/SwitchCase.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/SwitchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Symbol.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/SymbolGroup.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/SymbolStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/TernaryExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/TryCatchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Tuple.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/TupleType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Type.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/TypeAlias.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/TypePlaceholder.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Typeable.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/UnaryExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/UnionType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Unpack.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Unwrappable.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Usable.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Usage.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/UsageKind.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/UsageType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/Value.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/WhileStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/core/WithStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/index.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyAssignment.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyAssignmentStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyAttribute.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyBlockStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyBreakStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyCatchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyChainedAttribute.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyClass.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyCodeBlock.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyComment.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyCommentGroup.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyCommentType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyConditionalExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyDecorator.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyFile.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyForLoopStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyFunction.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyGenericType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyHasBlock.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyIfBlockStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyImport.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyImportStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyMatchCase.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyMatchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyNamedType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyParameter.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyPassStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyReturnTypePlaceholder.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyString.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PySymbol.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyTryCatchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyUnionType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/python/PyWhileStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/JSXElement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/JSXExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/JSXProp.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSArrayType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSAssignment.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSAssignmentStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSAttribute.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSBlockStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSCatchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSChainedAttribute.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSClass.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSCodeBlock.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSComment.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSCommentGroup.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSCommentType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSConditionalType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSConfig.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSDecorator.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSDict.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSEnum.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSExport.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSExpressionType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSFile.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSForLoopStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSFunction.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSFunctionType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSGenericType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSHasBlock.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSIfBlockStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSImport.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSImportStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSInterface.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSLabeledStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSLookupType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSNamedType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSNamespace.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSObjectType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSPair.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSParameter.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSQueryType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSReadonlyType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSReturnTypePlaceholder.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSString.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSSwitchCase.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSSwitchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSSymbol.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSTernaryExpression.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSTryCatchStatement.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSTypeAlias.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSUndefinedType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSUnionType.mdx (100%)
rename docs/{ => _deprecated}/api-reference/typescript/TSWhileStatement.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/at-a-glance.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/calling-out-to-llms.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/class-api.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/codebase-visualization.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/codegen-with-wsl.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/collections.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/comments-and-docstrings.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/commit-and-reset.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/dependencies-and-usages.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/dot-codegen.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/editables-and-behaviors.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/exports.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/external-modules.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/files-and-directories.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/flagging-symbols.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/function-calls-and-callsites.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/function-decorator.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/git-operations.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/imports.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/inheritable-behaviors.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/language-support.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/local-variables.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/moving-symbols.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/parsing-codebases.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/react-and-jsx.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/reducing-conditions.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/reusable-codemods.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/semantic-code-search.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/statements-and-code-blocks.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/symbol-api.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/the-editable-api.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/traversing-the-call-graph.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/type-annotations.mdx (100%)
rename docs/{ => _deprecated}/building-with-codegen/variable-assignments.mdx (100%)
rename docs/{ => _deprecated}/cli/about.mdx (100%)
rename docs/{ => _deprecated}/cli/create.mdx (100%)
rename docs/{ => _deprecated}/cli/expert.mdx (100%)
rename docs/{ => _deprecated}/cli/init.mdx (100%)
rename docs/{ => _deprecated}/cli/login.mdx (100%)
rename docs/{ => _deprecated}/cli/notebook.mdx (100%)
rename docs/{ => _deprecated}/cli/reset.mdx (100%)
rename docs/{ => _deprecated}/cli/run.mdx (100%)
rename docs/{ => _deprecated}/cli/update.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/about.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/advanced-settings.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/community.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/faq.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/getting-started.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/guiding-principles.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/how-it-works.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/ide-usage.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/installation.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/overview.mdx (100%)
rename docs/{ => _deprecated}/graph-sitter/work-with-ai.mdx (100%)
rename docs/{ => _deprecated}/tutorials/at-a-glance.mdx (100%)
rename docs/{ => _deprecated}/tutorials/attributions.mdx (100%)
rename docs/{ => _deprecated}/tutorials/build-mcp.mdx (100%)
rename docs/{ => _deprecated}/tutorials/codebase-analytics-dashboard.mdx (100%)
rename docs/{ => _deprecated}/tutorials/codebase-visualization.mdx (100%)
rename docs/{ => _deprecated}/tutorials/converting-default-exports.mdx (100%)
rename docs/{ => _deprecated}/tutorials/creating-documentation.mdx (100%)
rename docs/{ => _deprecated}/tutorials/deep-code-research.mdx (100%)
rename docs/{ => _deprecated}/tutorials/deleting-dead-code.mdx (100%)
rename docs/{ => _deprecated}/tutorials/fixing-import-loops-in-pytorch.mdx (100%)
rename docs/{ => _deprecated}/tutorials/flask-to-fastapi.mdx (100%)
rename docs/{ => _deprecated}/tutorials/increase-type-coverage.mdx (100%)
rename docs/{ => _deprecated}/tutorials/manage-feature-flags.mdx (100%)
rename docs/{ => _deprecated}/tutorials/managing-typescript-exports.mdx (100%)
rename docs/{ => _deprecated}/tutorials/migrating-apis.mdx (100%)
rename docs/{ => _deprecated}/tutorials/modularity.mdx (100%)
rename docs/{ => _deprecated}/tutorials/neo4j-graph.mdx (100%)
rename docs/{ => _deprecated}/tutorials/organize-your-codebase.mdx (100%)
rename docs/{ => _deprecated}/tutorials/preparing-your-codebase-for-ai.mdx (100%)
rename docs/{ => _deprecated}/tutorials/promise-to-async-await.mdx (100%)
rename docs/{ => _deprecated}/tutorials/python2-to-python3.mdx (100%)
rename docs/{ => _deprecated}/tutorials/react-modernization.mdx (100%)
rename docs/{ => _deprecated}/tutorials/slack-bot.mdx (100%)
rename docs/{ => _deprecated}/tutorials/sqlalchemy-1.6-to-2.0.mdx (100%)
rename docs/{ => _deprecated}/tutorials/training-data.mdx (100%)
rename docs/{ => _deprecated}/tutorials/unittest-to-pytest.mdx (100%)
diff --git a/docs/api-reference/core/Argument.mdx b/docs/_deprecated/api-reference/core/Argument.mdx
similarity index 100%
rename from docs/api-reference/core/Argument.mdx
rename to docs/_deprecated/api-reference/core/Argument.mdx
diff --git a/docs/api-reference/core/Assignment.mdx b/docs/_deprecated/api-reference/core/Assignment.mdx
similarity index 100%
rename from docs/api-reference/core/Assignment.mdx
rename to docs/_deprecated/api-reference/core/Assignment.mdx
diff --git a/docs/api-reference/core/AssignmentStatement.mdx b/docs/_deprecated/api-reference/core/AssignmentStatement.mdx
similarity index 100%
rename from docs/api-reference/core/AssignmentStatement.mdx
rename to docs/_deprecated/api-reference/core/AssignmentStatement.mdx
diff --git a/docs/api-reference/core/Attribute.mdx b/docs/_deprecated/api-reference/core/Attribute.mdx
similarity index 100%
rename from docs/api-reference/core/Attribute.mdx
rename to docs/_deprecated/api-reference/core/Attribute.mdx
diff --git a/docs/api-reference/core/AwaitExpression.mdx b/docs/_deprecated/api-reference/core/AwaitExpression.mdx
similarity index 100%
rename from docs/api-reference/core/AwaitExpression.mdx
rename to docs/_deprecated/api-reference/core/AwaitExpression.mdx
diff --git a/docs/api-reference/core/BinaryExpression.mdx b/docs/_deprecated/api-reference/core/BinaryExpression.mdx
similarity index 100%
rename from docs/api-reference/core/BinaryExpression.mdx
rename to docs/_deprecated/api-reference/core/BinaryExpression.mdx
diff --git a/docs/api-reference/core/BlockStatement.mdx b/docs/_deprecated/api-reference/core/BlockStatement.mdx
similarity index 100%
rename from docs/api-reference/core/BlockStatement.mdx
rename to docs/_deprecated/api-reference/core/BlockStatement.mdx
diff --git a/docs/api-reference/core/Boolean.mdx b/docs/_deprecated/api-reference/core/Boolean.mdx
similarity index 100%
rename from docs/api-reference/core/Boolean.mdx
rename to docs/_deprecated/api-reference/core/Boolean.mdx
diff --git a/docs/api-reference/core/Callable.mdx b/docs/_deprecated/api-reference/core/Callable.mdx
similarity index 100%
rename from docs/api-reference/core/Callable.mdx
rename to docs/_deprecated/api-reference/core/Callable.mdx
diff --git a/docs/api-reference/core/CatchStatement.mdx b/docs/_deprecated/api-reference/core/CatchStatement.mdx
similarity index 100%
rename from docs/api-reference/core/CatchStatement.mdx
rename to docs/_deprecated/api-reference/core/CatchStatement.mdx
diff --git a/docs/api-reference/core/ChainedAttribute.mdx b/docs/_deprecated/api-reference/core/ChainedAttribute.mdx
similarity index 100%
rename from docs/api-reference/core/ChainedAttribute.mdx
rename to docs/_deprecated/api-reference/core/ChainedAttribute.mdx
diff --git a/docs/api-reference/core/Class.mdx b/docs/_deprecated/api-reference/core/Class.mdx
similarity index 100%
rename from docs/api-reference/core/Class.mdx
rename to docs/_deprecated/api-reference/core/Class.mdx
diff --git a/docs/api-reference/core/CodeBlock.mdx b/docs/_deprecated/api-reference/core/CodeBlock.mdx
similarity index 100%
rename from docs/api-reference/core/CodeBlock.mdx
rename to docs/_deprecated/api-reference/core/CodeBlock.mdx
diff --git a/docs/api-reference/core/CodeOwner.mdx b/docs/_deprecated/api-reference/core/CodeOwner.mdx
similarity index 100%
rename from docs/api-reference/core/CodeOwner.mdx
rename to docs/_deprecated/api-reference/core/CodeOwner.mdx
diff --git a/docs/api-reference/core/Codebase.mdx b/docs/_deprecated/api-reference/core/Codebase.mdx
similarity index 100%
rename from docs/api-reference/core/Codebase.mdx
rename to docs/_deprecated/api-reference/core/Codebase.mdx
diff --git a/docs/api-reference/core/Comment.mdx b/docs/_deprecated/api-reference/core/Comment.mdx
similarity index 100%
rename from docs/api-reference/core/Comment.mdx
rename to docs/_deprecated/api-reference/core/Comment.mdx
diff --git a/docs/api-reference/core/CommentGroup.mdx b/docs/_deprecated/api-reference/core/CommentGroup.mdx
similarity index 100%
rename from docs/api-reference/core/CommentGroup.mdx
rename to docs/_deprecated/api-reference/core/CommentGroup.mdx
diff --git a/docs/api-reference/core/ComparisonExpression.mdx b/docs/_deprecated/api-reference/core/ComparisonExpression.mdx
similarity index 100%
rename from docs/api-reference/core/ComparisonExpression.mdx
rename to docs/_deprecated/api-reference/core/ComparisonExpression.mdx
diff --git a/docs/api-reference/core/Decorator.mdx b/docs/_deprecated/api-reference/core/Decorator.mdx
similarity index 100%
rename from docs/api-reference/core/Decorator.mdx
rename to docs/_deprecated/api-reference/core/Decorator.mdx
diff --git a/docs/api-reference/core/Dict.mdx b/docs/_deprecated/api-reference/core/Dict.mdx
similarity index 100%
rename from docs/api-reference/core/Dict.mdx
rename to docs/_deprecated/api-reference/core/Dict.mdx
diff --git a/docs/api-reference/core/Directory.mdx b/docs/_deprecated/api-reference/core/Directory.mdx
similarity index 100%
rename from docs/api-reference/core/Directory.mdx
rename to docs/_deprecated/api-reference/core/Directory.mdx
diff --git a/docs/api-reference/core/Editable.mdx b/docs/_deprecated/api-reference/core/Editable.mdx
similarity index 100%
rename from docs/api-reference/core/Editable.mdx
rename to docs/_deprecated/api-reference/core/Editable.mdx
diff --git a/docs/api-reference/core/Export.mdx b/docs/_deprecated/api-reference/core/Export.mdx
similarity index 100%
rename from docs/api-reference/core/Export.mdx
rename to docs/_deprecated/api-reference/core/Export.mdx
diff --git a/docs/api-reference/core/ExportStatement.mdx b/docs/_deprecated/api-reference/core/ExportStatement.mdx
similarity index 100%
rename from docs/api-reference/core/ExportStatement.mdx
rename to docs/_deprecated/api-reference/core/ExportStatement.mdx
diff --git a/docs/api-reference/core/Exportable.mdx b/docs/_deprecated/api-reference/core/Exportable.mdx
similarity index 100%
rename from docs/api-reference/core/Exportable.mdx
rename to docs/_deprecated/api-reference/core/Exportable.mdx
diff --git a/docs/api-reference/core/Expression.mdx b/docs/_deprecated/api-reference/core/Expression.mdx
similarity index 100%
rename from docs/api-reference/core/Expression.mdx
rename to docs/_deprecated/api-reference/core/Expression.mdx
diff --git a/docs/api-reference/core/ExpressionGroup.mdx b/docs/_deprecated/api-reference/core/ExpressionGroup.mdx
similarity index 100%
rename from docs/api-reference/core/ExpressionGroup.mdx
rename to docs/_deprecated/api-reference/core/ExpressionGroup.mdx
diff --git a/docs/api-reference/core/ExpressionStatement.mdx b/docs/_deprecated/api-reference/core/ExpressionStatement.mdx
similarity index 100%
rename from docs/api-reference/core/ExpressionStatement.mdx
rename to docs/_deprecated/api-reference/core/ExpressionStatement.mdx
diff --git a/docs/api-reference/core/ExternalModule.mdx b/docs/_deprecated/api-reference/core/ExternalModule.mdx
similarity index 100%
rename from docs/api-reference/core/ExternalModule.mdx
rename to docs/_deprecated/api-reference/core/ExternalModule.mdx
diff --git a/docs/api-reference/core/File.mdx b/docs/_deprecated/api-reference/core/File.mdx
similarity index 100%
rename from docs/api-reference/core/File.mdx
rename to docs/_deprecated/api-reference/core/File.mdx
diff --git a/docs/api-reference/core/FlagKwargs.mdx b/docs/_deprecated/api-reference/core/FlagKwargs.mdx
similarity index 100%
rename from docs/api-reference/core/FlagKwargs.mdx
rename to docs/_deprecated/api-reference/core/FlagKwargs.mdx
diff --git a/docs/api-reference/core/ForLoopStatement.mdx b/docs/_deprecated/api-reference/core/ForLoopStatement.mdx
similarity index 100%
rename from docs/api-reference/core/ForLoopStatement.mdx
rename to docs/_deprecated/api-reference/core/ForLoopStatement.mdx
diff --git a/docs/api-reference/core/Function.mdx b/docs/_deprecated/api-reference/core/Function.mdx
similarity index 100%
rename from docs/api-reference/core/Function.mdx
rename to docs/_deprecated/api-reference/core/Function.mdx
diff --git a/docs/api-reference/core/FunctionCall.mdx b/docs/_deprecated/api-reference/core/FunctionCall.mdx
similarity index 100%
rename from docs/api-reference/core/FunctionCall.mdx
rename to docs/_deprecated/api-reference/core/FunctionCall.mdx
diff --git a/docs/api-reference/core/GenericType.mdx b/docs/_deprecated/api-reference/core/GenericType.mdx
similarity index 100%
rename from docs/api-reference/core/GenericType.mdx
rename to docs/_deprecated/api-reference/core/GenericType.mdx
diff --git a/docs/api-reference/core/HasBlock.mdx b/docs/_deprecated/api-reference/core/HasBlock.mdx
similarity index 100%
rename from docs/api-reference/core/HasBlock.mdx
rename to docs/_deprecated/api-reference/core/HasBlock.mdx
diff --git a/docs/api-reference/core/HasName.mdx b/docs/_deprecated/api-reference/core/HasName.mdx
similarity index 100%
rename from docs/api-reference/core/HasName.mdx
rename to docs/_deprecated/api-reference/core/HasName.mdx
diff --git a/docs/api-reference/core/HasValue.mdx b/docs/_deprecated/api-reference/core/HasValue.mdx
similarity index 100%
rename from docs/api-reference/core/HasValue.mdx
rename to docs/_deprecated/api-reference/core/HasValue.mdx
diff --git a/docs/api-reference/core/IfBlockStatement.mdx b/docs/_deprecated/api-reference/core/IfBlockStatement.mdx
similarity index 100%
rename from docs/api-reference/core/IfBlockStatement.mdx
rename to docs/_deprecated/api-reference/core/IfBlockStatement.mdx
diff --git a/docs/api-reference/core/Import.mdx b/docs/_deprecated/api-reference/core/Import.mdx
similarity index 100%
rename from docs/api-reference/core/Import.mdx
rename to docs/_deprecated/api-reference/core/Import.mdx
diff --git a/docs/api-reference/core/ImportStatement.mdx b/docs/_deprecated/api-reference/core/ImportStatement.mdx
similarity index 100%
rename from docs/api-reference/core/ImportStatement.mdx
rename to docs/_deprecated/api-reference/core/ImportStatement.mdx
diff --git a/docs/api-reference/core/ImportType.mdx b/docs/_deprecated/api-reference/core/ImportType.mdx
similarity index 100%
rename from docs/api-reference/core/ImportType.mdx
rename to docs/_deprecated/api-reference/core/ImportType.mdx
diff --git a/docs/api-reference/core/Importable.mdx b/docs/_deprecated/api-reference/core/Importable.mdx
similarity index 100%
rename from docs/api-reference/core/Importable.mdx
rename to docs/_deprecated/api-reference/core/Importable.mdx
diff --git a/docs/api-reference/core/Interface.mdx b/docs/_deprecated/api-reference/core/Interface.mdx
similarity index 100%
rename from docs/api-reference/core/Interface.mdx
rename to docs/_deprecated/api-reference/core/Interface.mdx
diff --git a/docs/api-reference/core/List.mdx b/docs/_deprecated/api-reference/core/List.mdx
similarity index 100%
rename from docs/api-reference/core/List.mdx
rename to docs/_deprecated/api-reference/core/List.mdx
diff --git a/docs/api-reference/core/MessageType.mdx b/docs/_deprecated/api-reference/core/MessageType.mdx
similarity index 100%
rename from docs/api-reference/core/MessageType.mdx
rename to docs/_deprecated/api-reference/core/MessageType.mdx
diff --git a/docs/api-reference/core/MultiExpression.mdx b/docs/_deprecated/api-reference/core/MultiExpression.mdx
similarity index 100%
rename from docs/api-reference/core/MultiExpression.mdx
rename to docs/_deprecated/api-reference/core/MultiExpression.mdx
diff --git a/docs/api-reference/core/MultiLineCollection.mdx b/docs/_deprecated/api-reference/core/MultiLineCollection.mdx
similarity index 100%
rename from docs/api-reference/core/MultiLineCollection.mdx
rename to docs/_deprecated/api-reference/core/MultiLineCollection.mdx
diff --git a/docs/api-reference/core/Name.mdx b/docs/_deprecated/api-reference/core/Name.mdx
similarity index 100%
rename from docs/api-reference/core/Name.mdx
rename to docs/_deprecated/api-reference/core/Name.mdx
diff --git a/docs/api-reference/core/NamedType.mdx b/docs/_deprecated/api-reference/core/NamedType.mdx
similarity index 100%
rename from docs/api-reference/core/NamedType.mdx
rename to docs/_deprecated/api-reference/core/NamedType.mdx
diff --git a/docs/api-reference/core/NoneType.mdx b/docs/_deprecated/api-reference/core/NoneType.mdx
similarity index 100%
rename from docs/api-reference/core/NoneType.mdx
rename to docs/_deprecated/api-reference/core/NoneType.mdx
diff --git a/docs/api-reference/core/Number.mdx b/docs/_deprecated/api-reference/core/Number.mdx
similarity index 100%
rename from docs/api-reference/core/Number.mdx
rename to docs/_deprecated/api-reference/core/Number.mdx
diff --git a/docs/api-reference/core/Pair.mdx b/docs/_deprecated/api-reference/core/Pair.mdx
similarity index 100%
rename from docs/api-reference/core/Pair.mdx
rename to docs/_deprecated/api-reference/core/Pair.mdx
diff --git a/docs/api-reference/core/Parameter.mdx b/docs/_deprecated/api-reference/core/Parameter.mdx
similarity index 100%
rename from docs/api-reference/core/Parameter.mdx
rename to docs/_deprecated/api-reference/core/Parameter.mdx
diff --git a/docs/api-reference/core/ParenthesizedExpression.mdx b/docs/_deprecated/api-reference/core/ParenthesizedExpression.mdx
similarity index 100%
rename from docs/api-reference/core/ParenthesizedExpression.mdx
rename to docs/_deprecated/api-reference/core/ParenthesizedExpression.mdx
diff --git a/docs/api-reference/core/Placeholder.mdx b/docs/_deprecated/api-reference/core/Placeholder.mdx
similarity index 100%
rename from docs/api-reference/core/Placeholder.mdx
rename to docs/_deprecated/api-reference/core/Placeholder.mdx
diff --git a/docs/api-reference/core/PlaceholderType.mdx b/docs/_deprecated/api-reference/core/PlaceholderType.mdx
similarity index 100%
rename from docs/api-reference/core/PlaceholderType.mdx
rename to docs/_deprecated/api-reference/core/PlaceholderType.mdx
diff --git a/docs/api-reference/core/RaiseStatement.mdx b/docs/_deprecated/api-reference/core/RaiseStatement.mdx
similarity index 100%
rename from docs/api-reference/core/RaiseStatement.mdx
rename to docs/_deprecated/api-reference/core/RaiseStatement.mdx
diff --git a/docs/api-reference/core/ReturnStatement.mdx b/docs/_deprecated/api-reference/core/ReturnStatement.mdx
similarity index 100%
rename from docs/api-reference/core/ReturnStatement.mdx
rename to docs/_deprecated/api-reference/core/ReturnStatement.mdx
diff --git a/docs/api-reference/core/SourceFile.mdx b/docs/_deprecated/api-reference/core/SourceFile.mdx
similarity index 100%
rename from docs/api-reference/core/SourceFile.mdx
rename to docs/_deprecated/api-reference/core/SourceFile.mdx
diff --git a/docs/api-reference/core/Span.mdx b/docs/_deprecated/api-reference/core/Span.mdx
similarity index 100%
rename from docs/api-reference/core/Span.mdx
rename to docs/_deprecated/api-reference/core/Span.mdx
diff --git a/docs/api-reference/core/Statement.mdx b/docs/_deprecated/api-reference/core/Statement.mdx
similarity index 100%
rename from docs/api-reference/core/Statement.mdx
rename to docs/_deprecated/api-reference/core/Statement.mdx
diff --git a/docs/api-reference/core/StatementType.mdx b/docs/_deprecated/api-reference/core/StatementType.mdx
similarity index 100%
rename from docs/api-reference/core/StatementType.mdx
rename to docs/_deprecated/api-reference/core/StatementType.mdx
diff --git a/docs/api-reference/core/String.mdx b/docs/_deprecated/api-reference/core/String.mdx
similarity index 100%
rename from docs/api-reference/core/String.mdx
rename to docs/_deprecated/api-reference/core/String.mdx
diff --git a/docs/api-reference/core/StubPlaceholder.mdx b/docs/_deprecated/api-reference/core/StubPlaceholder.mdx
similarity index 100%
rename from docs/api-reference/core/StubPlaceholder.mdx
rename to docs/_deprecated/api-reference/core/StubPlaceholder.mdx
diff --git a/docs/api-reference/core/SubscriptExpression.mdx b/docs/_deprecated/api-reference/core/SubscriptExpression.mdx
similarity index 100%
rename from docs/api-reference/core/SubscriptExpression.mdx
rename to docs/_deprecated/api-reference/core/SubscriptExpression.mdx
diff --git a/docs/api-reference/core/SwitchCase.mdx b/docs/_deprecated/api-reference/core/SwitchCase.mdx
similarity index 100%
rename from docs/api-reference/core/SwitchCase.mdx
rename to docs/_deprecated/api-reference/core/SwitchCase.mdx
diff --git a/docs/api-reference/core/SwitchStatement.mdx b/docs/_deprecated/api-reference/core/SwitchStatement.mdx
similarity index 100%
rename from docs/api-reference/core/SwitchStatement.mdx
rename to docs/_deprecated/api-reference/core/SwitchStatement.mdx
diff --git a/docs/api-reference/core/Symbol.mdx b/docs/_deprecated/api-reference/core/Symbol.mdx
similarity index 100%
rename from docs/api-reference/core/Symbol.mdx
rename to docs/_deprecated/api-reference/core/Symbol.mdx
diff --git a/docs/api-reference/core/SymbolGroup.mdx b/docs/_deprecated/api-reference/core/SymbolGroup.mdx
similarity index 100%
rename from docs/api-reference/core/SymbolGroup.mdx
rename to docs/_deprecated/api-reference/core/SymbolGroup.mdx
diff --git a/docs/api-reference/core/SymbolStatement.mdx b/docs/_deprecated/api-reference/core/SymbolStatement.mdx
similarity index 100%
rename from docs/api-reference/core/SymbolStatement.mdx
rename to docs/_deprecated/api-reference/core/SymbolStatement.mdx
diff --git a/docs/api-reference/core/TernaryExpression.mdx b/docs/_deprecated/api-reference/core/TernaryExpression.mdx
similarity index 100%
rename from docs/api-reference/core/TernaryExpression.mdx
rename to docs/_deprecated/api-reference/core/TernaryExpression.mdx
diff --git a/docs/api-reference/core/TryCatchStatement.mdx b/docs/_deprecated/api-reference/core/TryCatchStatement.mdx
similarity index 100%
rename from docs/api-reference/core/TryCatchStatement.mdx
rename to docs/_deprecated/api-reference/core/TryCatchStatement.mdx
diff --git a/docs/api-reference/core/Tuple.mdx b/docs/_deprecated/api-reference/core/Tuple.mdx
similarity index 100%
rename from docs/api-reference/core/Tuple.mdx
rename to docs/_deprecated/api-reference/core/Tuple.mdx
diff --git a/docs/api-reference/core/TupleType.mdx b/docs/_deprecated/api-reference/core/TupleType.mdx
similarity index 100%
rename from docs/api-reference/core/TupleType.mdx
rename to docs/_deprecated/api-reference/core/TupleType.mdx
diff --git a/docs/api-reference/core/Type.mdx b/docs/_deprecated/api-reference/core/Type.mdx
similarity index 100%
rename from docs/api-reference/core/Type.mdx
rename to docs/_deprecated/api-reference/core/Type.mdx
diff --git a/docs/api-reference/core/TypeAlias.mdx b/docs/_deprecated/api-reference/core/TypeAlias.mdx
similarity index 100%
rename from docs/api-reference/core/TypeAlias.mdx
rename to docs/_deprecated/api-reference/core/TypeAlias.mdx
diff --git a/docs/api-reference/core/TypePlaceholder.mdx b/docs/_deprecated/api-reference/core/TypePlaceholder.mdx
similarity index 100%
rename from docs/api-reference/core/TypePlaceholder.mdx
rename to docs/_deprecated/api-reference/core/TypePlaceholder.mdx
diff --git a/docs/api-reference/core/Typeable.mdx b/docs/_deprecated/api-reference/core/Typeable.mdx
similarity index 100%
rename from docs/api-reference/core/Typeable.mdx
rename to docs/_deprecated/api-reference/core/Typeable.mdx
diff --git a/docs/api-reference/core/UnaryExpression.mdx b/docs/_deprecated/api-reference/core/UnaryExpression.mdx
similarity index 100%
rename from docs/api-reference/core/UnaryExpression.mdx
rename to docs/_deprecated/api-reference/core/UnaryExpression.mdx
diff --git a/docs/api-reference/core/UnionType.mdx b/docs/_deprecated/api-reference/core/UnionType.mdx
similarity index 100%
rename from docs/api-reference/core/UnionType.mdx
rename to docs/_deprecated/api-reference/core/UnionType.mdx
diff --git a/docs/api-reference/core/Unpack.mdx b/docs/_deprecated/api-reference/core/Unpack.mdx
similarity index 100%
rename from docs/api-reference/core/Unpack.mdx
rename to docs/_deprecated/api-reference/core/Unpack.mdx
diff --git a/docs/api-reference/core/Unwrappable.mdx b/docs/_deprecated/api-reference/core/Unwrappable.mdx
similarity index 100%
rename from docs/api-reference/core/Unwrappable.mdx
rename to docs/_deprecated/api-reference/core/Unwrappable.mdx
diff --git a/docs/api-reference/core/Usable.mdx b/docs/_deprecated/api-reference/core/Usable.mdx
similarity index 100%
rename from docs/api-reference/core/Usable.mdx
rename to docs/_deprecated/api-reference/core/Usable.mdx
diff --git a/docs/api-reference/core/Usage.mdx b/docs/_deprecated/api-reference/core/Usage.mdx
similarity index 100%
rename from docs/api-reference/core/Usage.mdx
rename to docs/_deprecated/api-reference/core/Usage.mdx
diff --git a/docs/api-reference/core/UsageKind.mdx b/docs/_deprecated/api-reference/core/UsageKind.mdx
similarity index 100%
rename from docs/api-reference/core/UsageKind.mdx
rename to docs/_deprecated/api-reference/core/UsageKind.mdx
diff --git a/docs/api-reference/core/UsageType.mdx b/docs/_deprecated/api-reference/core/UsageType.mdx
similarity index 100%
rename from docs/api-reference/core/UsageType.mdx
rename to docs/_deprecated/api-reference/core/UsageType.mdx
diff --git a/docs/api-reference/core/Value.mdx b/docs/_deprecated/api-reference/core/Value.mdx
similarity index 100%
rename from docs/api-reference/core/Value.mdx
rename to docs/_deprecated/api-reference/core/Value.mdx
diff --git a/docs/api-reference/core/WhileStatement.mdx b/docs/_deprecated/api-reference/core/WhileStatement.mdx
similarity index 100%
rename from docs/api-reference/core/WhileStatement.mdx
rename to docs/_deprecated/api-reference/core/WhileStatement.mdx
diff --git a/docs/api-reference/core/WithStatement.mdx b/docs/_deprecated/api-reference/core/WithStatement.mdx
similarity index 100%
rename from docs/api-reference/core/WithStatement.mdx
rename to docs/_deprecated/api-reference/core/WithStatement.mdx
diff --git a/docs/api-reference/index.mdx b/docs/_deprecated/api-reference/index.mdx
similarity index 100%
rename from docs/api-reference/index.mdx
rename to docs/_deprecated/api-reference/index.mdx
diff --git a/docs/api-reference/python/PyAssignment.mdx b/docs/_deprecated/api-reference/python/PyAssignment.mdx
similarity index 100%
rename from docs/api-reference/python/PyAssignment.mdx
rename to docs/_deprecated/api-reference/python/PyAssignment.mdx
diff --git a/docs/api-reference/python/PyAssignmentStatement.mdx b/docs/_deprecated/api-reference/python/PyAssignmentStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyAssignmentStatement.mdx
rename to docs/_deprecated/api-reference/python/PyAssignmentStatement.mdx
diff --git a/docs/api-reference/python/PyAttribute.mdx b/docs/_deprecated/api-reference/python/PyAttribute.mdx
similarity index 100%
rename from docs/api-reference/python/PyAttribute.mdx
rename to docs/_deprecated/api-reference/python/PyAttribute.mdx
diff --git a/docs/api-reference/python/PyBlockStatement.mdx b/docs/_deprecated/api-reference/python/PyBlockStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyBlockStatement.mdx
rename to docs/_deprecated/api-reference/python/PyBlockStatement.mdx
diff --git a/docs/api-reference/python/PyBreakStatement.mdx b/docs/_deprecated/api-reference/python/PyBreakStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyBreakStatement.mdx
rename to docs/_deprecated/api-reference/python/PyBreakStatement.mdx
diff --git a/docs/api-reference/python/PyCatchStatement.mdx b/docs/_deprecated/api-reference/python/PyCatchStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyCatchStatement.mdx
rename to docs/_deprecated/api-reference/python/PyCatchStatement.mdx
diff --git a/docs/api-reference/python/PyChainedAttribute.mdx b/docs/_deprecated/api-reference/python/PyChainedAttribute.mdx
similarity index 100%
rename from docs/api-reference/python/PyChainedAttribute.mdx
rename to docs/_deprecated/api-reference/python/PyChainedAttribute.mdx
diff --git a/docs/api-reference/python/PyClass.mdx b/docs/_deprecated/api-reference/python/PyClass.mdx
similarity index 100%
rename from docs/api-reference/python/PyClass.mdx
rename to docs/_deprecated/api-reference/python/PyClass.mdx
diff --git a/docs/api-reference/python/PyCodeBlock.mdx b/docs/_deprecated/api-reference/python/PyCodeBlock.mdx
similarity index 100%
rename from docs/api-reference/python/PyCodeBlock.mdx
rename to docs/_deprecated/api-reference/python/PyCodeBlock.mdx
diff --git a/docs/api-reference/python/PyComment.mdx b/docs/_deprecated/api-reference/python/PyComment.mdx
similarity index 100%
rename from docs/api-reference/python/PyComment.mdx
rename to docs/_deprecated/api-reference/python/PyComment.mdx
diff --git a/docs/api-reference/python/PyCommentGroup.mdx b/docs/_deprecated/api-reference/python/PyCommentGroup.mdx
similarity index 100%
rename from docs/api-reference/python/PyCommentGroup.mdx
rename to docs/_deprecated/api-reference/python/PyCommentGroup.mdx
diff --git a/docs/api-reference/python/PyCommentType.mdx b/docs/_deprecated/api-reference/python/PyCommentType.mdx
similarity index 100%
rename from docs/api-reference/python/PyCommentType.mdx
rename to docs/_deprecated/api-reference/python/PyCommentType.mdx
diff --git a/docs/api-reference/python/PyConditionalExpression.mdx b/docs/_deprecated/api-reference/python/PyConditionalExpression.mdx
similarity index 100%
rename from docs/api-reference/python/PyConditionalExpression.mdx
rename to docs/_deprecated/api-reference/python/PyConditionalExpression.mdx
diff --git a/docs/api-reference/python/PyDecorator.mdx b/docs/_deprecated/api-reference/python/PyDecorator.mdx
similarity index 100%
rename from docs/api-reference/python/PyDecorator.mdx
rename to docs/_deprecated/api-reference/python/PyDecorator.mdx
diff --git a/docs/api-reference/python/PyFile.mdx b/docs/_deprecated/api-reference/python/PyFile.mdx
similarity index 100%
rename from docs/api-reference/python/PyFile.mdx
rename to docs/_deprecated/api-reference/python/PyFile.mdx
diff --git a/docs/api-reference/python/PyForLoopStatement.mdx b/docs/_deprecated/api-reference/python/PyForLoopStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyForLoopStatement.mdx
rename to docs/_deprecated/api-reference/python/PyForLoopStatement.mdx
diff --git a/docs/api-reference/python/PyFunction.mdx b/docs/_deprecated/api-reference/python/PyFunction.mdx
similarity index 100%
rename from docs/api-reference/python/PyFunction.mdx
rename to docs/_deprecated/api-reference/python/PyFunction.mdx
diff --git a/docs/api-reference/python/PyGenericType.mdx b/docs/_deprecated/api-reference/python/PyGenericType.mdx
similarity index 100%
rename from docs/api-reference/python/PyGenericType.mdx
rename to docs/_deprecated/api-reference/python/PyGenericType.mdx
diff --git a/docs/api-reference/python/PyHasBlock.mdx b/docs/_deprecated/api-reference/python/PyHasBlock.mdx
similarity index 100%
rename from docs/api-reference/python/PyHasBlock.mdx
rename to docs/_deprecated/api-reference/python/PyHasBlock.mdx
diff --git a/docs/api-reference/python/PyIfBlockStatement.mdx b/docs/_deprecated/api-reference/python/PyIfBlockStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyIfBlockStatement.mdx
rename to docs/_deprecated/api-reference/python/PyIfBlockStatement.mdx
diff --git a/docs/api-reference/python/PyImport.mdx b/docs/_deprecated/api-reference/python/PyImport.mdx
similarity index 100%
rename from docs/api-reference/python/PyImport.mdx
rename to docs/_deprecated/api-reference/python/PyImport.mdx
diff --git a/docs/api-reference/python/PyImportStatement.mdx b/docs/_deprecated/api-reference/python/PyImportStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyImportStatement.mdx
rename to docs/_deprecated/api-reference/python/PyImportStatement.mdx
diff --git a/docs/api-reference/python/PyMatchCase.mdx b/docs/_deprecated/api-reference/python/PyMatchCase.mdx
similarity index 100%
rename from docs/api-reference/python/PyMatchCase.mdx
rename to docs/_deprecated/api-reference/python/PyMatchCase.mdx
diff --git a/docs/api-reference/python/PyMatchStatement.mdx b/docs/_deprecated/api-reference/python/PyMatchStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyMatchStatement.mdx
rename to docs/_deprecated/api-reference/python/PyMatchStatement.mdx
diff --git a/docs/api-reference/python/PyNamedType.mdx b/docs/_deprecated/api-reference/python/PyNamedType.mdx
similarity index 100%
rename from docs/api-reference/python/PyNamedType.mdx
rename to docs/_deprecated/api-reference/python/PyNamedType.mdx
diff --git a/docs/api-reference/python/PyParameter.mdx b/docs/_deprecated/api-reference/python/PyParameter.mdx
similarity index 100%
rename from docs/api-reference/python/PyParameter.mdx
rename to docs/_deprecated/api-reference/python/PyParameter.mdx
diff --git a/docs/api-reference/python/PyPassStatement.mdx b/docs/_deprecated/api-reference/python/PyPassStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyPassStatement.mdx
rename to docs/_deprecated/api-reference/python/PyPassStatement.mdx
diff --git a/docs/api-reference/python/PyReturnTypePlaceholder.mdx b/docs/_deprecated/api-reference/python/PyReturnTypePlaceholder.mdx
similarity index 100%
rename from docs/api-reference/python/PyReturnTypePlaceholder.mdx
rename to docs/_deprecated/api-reference/python/PyReturnTypePlaceholder.mdx
diff --git a/docs/api-reference/python/PyString.mdx b/docs/_deprecated/api-reference/python/PyString.mdx
similarity index 100%
rename from docs/api-reference/python/PyString.mdx
rename to docs/_deprecated/api-reference/python/PyString.mdx
diff --git a/docs/api-reference/python/PySymbol.mdx b/docs/_deprecated/api-reference/python/PySymbol.mdx
similarity index 100%
rename from docs/api-reference/python/PySymbol.mdx
rename to docs/_deprecated/api-reference/python/PySymbol.mdx
diff --git a/docs/api-reference/python/PyTryCatchStatement.mdx b/docs/_deprecated/api-reference/python/PyTryCatchStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyTryCatchStatement.mdx
rename to docs/_deprecated/api-reference/python/PyTryCatchStatement.mdx
diff --git a/docs/api-reference/python/PyUnionType.mdx b/docs/_deprecated/api-reference/python/PyUnionType.mdx
similarity index 100%
rename from docs/api-reference/python/PyUnionType.mdx
rename to docs/_deprecated/api-reference/python/PyUnionType.mdx
diff --git a/docs/api-reference/python/PyWhileStatement.mdx b/docs/_deprecated/api-reference/python/PyWhileStatement.mdx
similarity index 100%
rename from docs/api-reference/python/PyWhileStatement.mdx
rename to docs/_deprecated/api-reference/python/PyWhileStatement.mdx
diff --git a/docs/api-reference/typescript/JSXElement.mdx b/docs/_deprecated/api-reference/typescript/JSXElement.mdx
similarity index 100%
rename from docs/api-reference/typescript/JSXElement.mdx
rename to docs/_deprecated/api-reference/typescript/JSXElement.mdx
diff --git a/docs/api-reference/typescript/JSXExpression.mdx b/docs/_deprecated/api-reference/typescript/JSXExpression.mdx
similarity index 100%
rename from docs/api-reference/typescript/JSXExpression.mdx
rename to docs/_deprecated/api-reference/typescript/JSXExpression.mdx
diff --git a/docs/api-reference/typescript/JSXProp.mdx b/docs/_deprecated/api-reference/typescript/JSXProp.mdx
similarity index 100%
rename from docs/api-reference/typescript/JSXProp.mdx
rename to docs/_deprecated/api-reference/typescript/JSXProp.mdx
diff --git a/docs/api-reference/typescript/TSArrayType.mdx b/docs/_deprecated/api-reference/typescript/TSArrayType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSArrayType.mdx
rename to docs/_deprecated/api-reference/typescript/TSArrayType.mdx
diff --git a/docs/api-reference/typescript/TSAssignment.mdx b/docs/_deprecated/api-reference/typescript/TSAssignment.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSAssignment.mdx
rename to docs/_deprecated/api-reference/typescript/TSAssignment.mdx
diff --git a/docs/api-reference/typescript/TSAssignmentStatement.mdx b/docs/_deprecated/api-reference/typescript/TSAssignmentStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSAssignmentStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSAssignmentStatement.mdx
diff --git a/docs/api-reference/typescript/TSAttribute.mdx b/docs/_deprecated/api-reference/typescript/TSAttribute.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSAttribute.mdx
rename to docs/_deprecated/api-reference/typescript/TSAttribute.mdx
diff --git a/docs/api-reference/typescript/TSBlockStatement.mdx b/docs/_deprecated/api-reference/typescript/TSBlockStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSBlockStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSBlockStatement.mdx
diff --git a/docs/api-reference/typescript/TSCatchStatement.mdx b/docs/_deprecated/api-reference/typescript/TSCatchStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSCatchStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSCatchStatement.mdx
diff --git a/docs/api-reference/typescript/TSChainedAttribute.mdx b/docs/_deprecated/api-reference/typescript/TSChainedAttribute.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSChainedAttribute.mdx
rename to docs/_deprecated/api-reference/typescript/TSChainedAttribute.mdx
diff --git a/docs/api-reference/typescript/TSClass.mdx b/docs/_deprecated/api-reference/typescript/TSClass.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSClass.mdx
rename to docs/_deprecated/api-reference/typescript/TSClass.mdx
diff --git a/docs/api-reference/typescript/TSCodeBlock.mdx b/docs/_deprecated/api-reference/typescript/TSCodeBlock.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSCodeBlock.mdx
rename to docs/_deprecated/api-reference/typescript/TSCodeBlock.mdx
diff --git a/docs/api-reference/typescript/TSComment.mdx b/docs/_deprecated/api-reference/typescript/TSComment.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSComment.mdx
rename to docs/_deprecated/api-reference/typescript/TSComment.mdx
diff --git a/docs/api-reference/typescript/TSCommentGroup.mdx b/docs/_deprecated/api-reference/typescript/TSCommentGroup.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSCommentGroup.mdx
rename to docs/_deprecated/api-reference/typescript/TSCommentGroup.mdx
diff --git a/docs/api-reference/typescript/TSCommentType.mdx b/docs/_deprecated/api-reference/typescript/TSCommentType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSCommentType.mdx
rename to docs/_deprecated/api-reference/typescript/TSCommentType.mdx
diff --git a/docs/api-reference/typescript/TSConditionalType.mdx b/docs/_deprecated/api-reference/typescript/TSConditionalType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSConditionalType.mdx
rename to docs/_deprecated/api-reference/typescript/TSConditionalType.mdx
diff --git a/docs/api-reference/typescript/TSConfig.mdx b/docs/_deprecated/api-reference/typescript/TSConfig.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSConfig.mdx
rename to docs/_deprecated/api-reference/typescript/TSConfig.mdx
diff --git a/docs/api-reference/typescript/TSDecorator.mdx b/docs/_deprecated/api-reference/typescript/TSDecorator.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSDecorator.mdx
rename to docs/_deprecated/api-reference/typescript/TSDecorator.mdx
diff --git a/docs/api-reference/typescript/TSDict.mdx b/docs/_deprecated/api-reference/typescript/TSDict.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSDict.mdx
rename to docs/_deprecated/api-reference/typescript/TSDict.mdx
diff --git a/docs/api-reference/typescript/TSEnum.mdx b/docs/_deprecated/api-reference/typescript/TSEnum.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSEnum.mdx
rename to docs/_deprecated/api-reference/typescript/TSEnum.mdx
diff --git a/docs/api-reference/typescript/TSExport.mdx b/docs/_deprecated/api-reference/typescript/TSExport.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSExport.mdx
rename to docs/_deprecated/api-reference/typescript/TSExport.mdx
diff --git a/docs/api-reference/typescript/TSExpressionType.mdx b/docs/_deprecated/api-reference/typescript/TSExpressionType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSExpressionType.mdx
rename to docs/_deprecated/api-reference/typescript/TSExpressionType.mdx
diff --git a/docs/api-reference/typescript/TSFile.mdx b/docs/_deprecated/api-reference/typescript/TSFile.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSFile.mdx
rename to docs/_deprecated/api-reference/typescript/TSFile.mdx
diff --git a/docs/api-reference/typescript/TSForLoopStatement.mdx b/docs/_deprecated/api-reference/typescript/TSForLoopStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSForLoopStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSForLoopStatement.mdx
diff --git a/docs/api-reference/typescript/TSFunction.mdx b/docs/_deprecated/api-reference/typescript/TSFunction.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSFunction.mdx
rename to docs/_deprecated/api-reference/typescript/TSFunction.mdx
diff --git a/docs/api-reference/typescript/TSFunctionType.mdx b/docs/_deprecated/api-reference/typescript/TSFunctionType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSFunctionType.mdx
rename to docs/_deprecated/api-reference/typescript/TSFunctionType.mdx
diff --git a/docs/api-reference/typescript/TSGenericType.mdx b/docs/_deprecated/api-reference/typescript/TSGenericType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSGenericType.mdx
rename to docs/_deprecated/api-reference/typescript/TSGenericType.mdx
diff --git a/docs/api-reference/typescript/TSHasBlock.mdx b/docs/_deprecated/api-reference/typescript/TSHasBlock.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSHasBlock.mdx
rename to docs/_deprecated/api-reference/typescript/TSHasBlock.mdx
diff --git a/docs/api-reference/typescript/TSIfBlockStatement.mdx b/docs/_deprecated/api-reference/typescript/TSIfBlockStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSIfBlockStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSIfBlockStatement.mdx
diff --git a/docs/api-reference/typescript/TSImport.mdx b/docs/_deprecated/api-reference/typescript/TSImport.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSImport.mdx
rename to docs/_deprecated/api-reference/typescript/TSImport.mdx
diff --git a/docs/api-reference/typescript/TSImportStatement.mdx b/docs/_deprecated/api-reference/typescript/TSImportStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSImportStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSImportStatement.mdx
diff --git a/docs/api-reference/typescript/TSInterface.mdx b/docs/_deprecated/api-reference/typescript/TSInterface.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSInterface.mdx
rename to docs/_deprecated/api-reference/typescript/TSInterface.mdx
diff --git a/docs/api-reference/typescript/TSLabeledStatement.mdx b/docs/_deprecated/api-reference/typescript/TSLabeledStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSLabeledStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSLabeledStatement.mdx
diff --git a/docs/api-reference/typescript/TSLookupType.mdx b/docs/_deprecated/api-reference/typescript/TSLookupType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSLookupType.mdx
rename to docs/_deprecated/api-reference/typescript/TSLookupType.mdx
diff --git a/docs/api-reference/typescript/TSNamedType.mdx b/docs/_deprecated/api-reference/typescript/TSNamedType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSNamedType.mdx
rename to docs/_deprecated/api-reference/typescript/TSNamedType.mdx
diff --git a/docs/api-reference/typescript/TSNamespace.mdx b/docs/_deprecated/api-reference/typescript/TSNamespace.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSNamespace.mdx
rename to docs/_deprecated/api-reference/typescript/TSNamespace.mdx
diff --git a/docs/api-reference/typescript/TSObjectType.mdx b/docs/_deprecated/api-reference/typescript/TSObjectType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSObjectType.mdx
rename to docs/_deprecated/api-reference/typescript/TSObjectType.mdx
diff --git a/docs/api-reference/typescript/TSPair.mdx b/docs/_deprecated/api-reference/typescript/TSPair.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSPair.mdx
rename to docs/_deprecated/api-reference/typescript/TSPair.mdx
diff --git a/docs/api-reference/typescript/TSParameter.mdx b/docs/_deprecated/api-reference/typescript/TSParameter.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSParameter.mdx
rename to docs/_deprecated/api-reference/typescript/TSParameter.mdx
diff --git a/docs/api-reference/typescript/TSQueryType.mdx b/docs/_deprecated/api-reference/typescript/TSQueryType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSQueryType.mdx
rename to docs/_deprecated/api-reference/typescript/TSQueryType.mdx
diff --git a/docs/api-reference/typescript/TSReadonlyType.mdx b/docs/_deprecated/api-reference/typescript/TSReadonlyType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSReadonlyType.mdx
rename to docs/_deprecated/api-reference/typescript/TSReadonlyType.mdx
diff --git a/docs/api-reference/typescript/TSReturnTypePlaceholder.mdx b/docs/_deprecated/api-reference/typescript/TSReturnTypePlaceholder.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSReturnTypePlaceholder.mdx
rename to docs/_deprecated/api-reference/typescript/TSReturnTypePlaceholder.mdx
diff --git a/docs/api-reference/typescript/TSString.mdx b/docs/_deprecated/api-reference/typescript/TSString.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSString.mdx
rename to docs/_deprecated/api-reference/typescript/TSString.mdx
diff --git a/docs/api-reference/typescript/TSSwitchCase.mdx b/docs/_deprecated/api-reference/typescript/TSSwitchCase.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSSwitchCase.mdx
rename to docs/_deprecated/api-reference/typescript/TSSwitchCase.mdx
diff --git a/docs/api-reference/typescript/TSSwitchStatement.mdx b/docs/_deprecated/api-reference/typescript/TSSwitchStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSSwitchStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSSwitchStatement.mdx
diff --git a/docs/api-reference/typescript/TSSymbol.mdx b/docs/_deprecated/api-reference/typescript/TSSymbol.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSSymbol.mdx
rename to docs/_deprecated/api-reference/typescript/TSSymbol.mdx
diff --git a/docs/api-reference/typescript/TSTernaryExpression.mdx b/docs/_deprecated/api-reference/typescript/TSTernaryExpression.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSTernaryExpression.mdx
rename to docs/_deprecated/api-reference/typescript/TSTernaryExpression.mdx
diff --git a/docs/api-reference/typescript/TSTryCatchStatement.mdx b/docs/_deprecated/api-reference/typescript/TSTryCatchStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSTryCatchStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSTryCatchStatement.mdx
diff --git a/docs/api-reference/typescript/TSTypeAlias.mdx b/docs/_deprecated/api-reference/typescript/TSTypeAlias.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSTypeAlias.mdx
rename to docs/_deprecated/api-reference/typescript/TSTypeAlias.mdx
diff --git a/docs/api-reference/typescript/TSUndefinedType.mdx b/docs/_deprecated/api-reference/typescript/TSUndefinedType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSUndefinedType.mdx
rename to docs/_deprecated/api-reference/typescript/TSUndefinedType.mdx
diff --git a/docs/api-reference/typescript/TSUnionType.mdx b/docs/_deprecated/api-reference/typescript/TSUnionType.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSUnionType.mdx
rename to docs/_deprecated/api-reference/typescript/TSUnionType.mdx
diff --git a/docs/api-reference/typescript/TSWhileStatement.mdx b/docs/_deprecated/api-reference/typescript/TSWhileStatement.mdx
similarity index 100%
rename from docs/api-reference/typescript/TSWhileStatement.mdx
rename to docs/_deprecated/api-reference/typescript/TSWhileStatement.mdx
diff --git a/docs/building-with-codegen/at-a-glance.mdx b/docs/_deprecated/building-with-codegen/at-a-glance.mdx
similarity index 100%
rename from docs/building-with-codegen/at-a-glance.mdx
rename to docs/_deprecated/building-with-codegen/at-a-glance.mdx
diff --git a/docs/building-with-codegen/calling-out-to-llms.mdx b/docs/_deprecated/building-with-codegen/calling-out-to-llms.mdx
similarity index 100%
rename from docs/building-with-codegen/calling-out-to-llms.mdx
rename to docs/_deprecated/building-with-codegen/calling-out-to-llms.mdx
diff --git a/docs/building-with-codegen/class-api.mdx b/docs/_deprecated/building-with-codegen/class-api.mdx
similarity index 100%
rename from docs/building-with-codegen/class-api.mdx
rename to docs/_deprecated/building-with-codegen/class-api.mdx
diff --git a/docs/building-with-codegen/codebase-visualization.mdx b/docs/_deprecated/building-with-codegen/codebase-visualization.mdx
similarity index 100%
rename from docs/building-with-codegen/codebase-visualization.mdx
rename to docs/_deprecated/building-with-codegen/codebase-visualization.mdx
diff --git a/docs/building-with-codegen/codegen-with-wsl.mdx b/docs/_deprecated/building-with-codegen/codegen-with-wsl.mdx
similarity index 100%
rename from docs/building-with-codegen/codegen-with-wsl.mdx
rename to docs/_deprecated/building-with-codegen/codegen-with-wsl.mdx
diff --git a/docs/building-with-codegen/collections.mdx b/docs/_deprecated/building-with-codegen/collections.mdx
similarity index 100%
rename from docs/building-with-codegen/collections.mdx
rename to docs/_deprecated/building-with-codegen/collections.mdx
diff --git a/docs/building-with-codegen/comments-and-docstrings.mdx b/docs/_deprecated/building-with-codegen/comments-and-docstrings.mdx
similarity index 100%
rename from docs/building-with-codegen/comments-and-docstrings.mdx
rename to docs/_deprecated/building-with-codegen/comments-and-docstrings.mdx
diff --git a/docs/building-with-codegen/commit-and-reset.mdx b/docs/_deprecated/building-with-codegen/commit-and-reset.mdx
similarity index 100%
rename from docs/building-with-codegen/commit-and-reset.mdx
rename to docs/_deprecated/building-with-codegen/commit-and-reset.mdx
diff --git a/docs/building-with-codegen/dependencies-and-usages.mdx b/docs/_deprecated/building-with-codegen/dependencies-and-usages.mdx
similarity index 100%
rename from docs/building-with-codegen/dependencies-and-usages.mdx
rename to docs/_deprecated/building-with-codegen/dependencies-and-usages.mdx
diff --git a/docs/building-with-codegen/dot-codegen.mdx b/docs/_deprecated/building-with-codegen/dot-codegen.mdx
similarity index 100%
rename from docs/building-with-codegen/dot-codegen.mdx
rename to docs/_deprecated/building-with-codegen/dot-codegen.mdx
diff --git a/docs/building-with-codegen/editables-and-behaviors.mdx b/docs/_deprecated/building-with-codegen/editables-and-behaviors.mdx
similarity index 100%
rename from docs/building-with-codegen/editables-and-behaviors.mdx
rename to docs/_deprecated/building-with-codegen/editables-and-behaviors.mdx
diff --git a/docs/building-with-codegen/exports.mdx b/docs/_deprecated/building-with-codegen/exports.mdx
similarity index 100%
rename from docs/building-with-codegen/exports.mdx
rename to docs/_deprecated/building-with-codegen/exports.mdx
diff --git a/docs/building-with-codegen/external-modules.mdx b/docs/_deprecated/building-with-codegen/external-modules.mdx
similarity index 100%
rename from docs/building-with-codegen/external-modules.mdx
rename to docs/_deprecated/building-with-codegen/external-modules.mdx
diff --git a/docs/building-with-codegen/files-and-directories.mdx b/docs/_deprecated/building-with-codegen/files-and-directories.mdx
similarity index 100%
rename from docs/building-with-codegen/files-and-directories.mdx
rename to docs/_deprecated/building-with-codegen/files-and-directories.mdx
diff --git a/docs/building-with-codegen/flagging-symbols.mdx b/docs/_deprecated/building-with-codegen/flagging-symbols.mdx
similarity index 100%
rename from docs/building-with-codegen/flagging-symbols.mdx
rename to docs/_deprecated/building-with-codegen/flagging-symbols.mdx
diff --git a/docs/building-with-codegen/function-calls-and-callsites.mdx b/docs/_deprecated/building-with-codegen/function-calls-and-callsites.mdx
similarity index 100%
rename from docs/building-with-codegen/function-calls-and-callsites.mdx
rename to docs/_deprecated/building-with-codegen/function-calls-and-callsites.mdx
diff --git a/docs/building-with-codegen/function-decorator.mdx b/docs/_deprecated/building-with-codegen/function-decorator.mdx
similarity index 100%
rename from docs/building-with-codegen/function-decorator.mdx
rename to docs/_deprecated/building-with-codegen/function-decorator.mdx
diff --git a/docs/building-with-codegen/git-operations.mdx b/docs/_deprecated/building-with-codegen/git-operations.mdx
similarity index 100%
rename from docs/building-with-codegen/git-operations.mdx
rename to docs/_deprecated/building-with-codegen/git-operations.mdx
diff --git a/docs/building-with-codegen/imports.mdx b/docs/_deprecated/building-with-codegen/imports.mdx
similarity index 100%
rename from docs/building-with-codegen/imports.mdx
rename to docs/_deprecated/building-with-codegen/imports.mdx
diff --git a/docs/building-with-codegen/inheritable-behaviors.mdx b/docs/_deprecated/building-with-codegen/inheritable-behaviors.mdx
similarity index 100%
rename from docs/building-with-codegen/inheritable-behaviors.mdx
rename to docs/_deprecated/building-with-codegen/inheritable-behaviors.mdx
diff --git a/docs/building-with-codegen/language-support.mdx b/docs/_deprecated/building-with-codegen/language-support.mdx
similarity index 100%
rename from docs/building-with-codegen/language-support.mdx
rename to docs/_deprecated/building-with-codegen/language-support.mdx
diff --git a/docs/building-with-codegen/local-variables.mdx b/docs/_deprecated/building-with-codegen/local-variables.mdx
similarity index 100%
rename from docs/building-with-codegen/local-variables.mdx
rename to docs/_deprecated/building-with-codegen/local-variables.mdx
diff --git a/docs/building-with-codegen/moving-symbols.mdx b/docs/_deprecated/building-with-codegen/moving-symbols.mdx
similarity index 100%
rename from docs/building-with-codegen/moving-symbols.mdx
rename to docs/_deprecated/building-with-codegen/moving-symbols.mdx
diff --git a/docs/building-with-codegen/parsing-codebases.mdx b/docs/_deprecated/building-with-codegen/parsing-codebases.mdx
similarity index 100%
rename from docs/building-with-codegen/parsing-codebases.mdx
rename to docs/_deprecated/building-with-codegen/parsing-codebases.mdx
diff --git a/docs/building-with-codegen/react-and-jsx.mdx b/docs/_deprecated/building-with-codegen/react-and-jsx.mdx
similarity index 100%
rename from docs/building-with-codegen/react-and-jsx.mdx
rename to docs/_deprecated/building-with-codegen/react-and-jsx.mdx
diff --git a/docs/building-with-codegen/reducing-conditions.mdx b/docs/_deprecated/building-with-codegen/reducing-conditions.mdx
similarity index 100%
rename from docs/building-with-codegen/reducing-conditions.mdx
rename to docs/_deprecated/building-with-codegen/reducing-conditions.mdx
diff --git a/docs/building-with-codegen/reusable-codemods.mdx b/docs/_deprecated/building-with-codegen/reusable-codemods.mdx
similarity index 100%
rename from docs/building-with-codegen/reusable-codemods.mdx
rename to docs/_deprecated/building-with-codegen/reusable-codemods.mdx
diff --git a/docs/building-with-codegen/semantic-code-search.mdx b/docs/_deprecated/building-with-codegen/semantic-code-search.mdx
similarity index 100%
rename from docs/building-with-codegen/semantic-code-search.mdx
rename to docs/_deprecated/building-with-codegen/semantic-code-search.mdx
diff --git a/docs/building-with-codegen/statements-and-code-blocks.mdx b/docs/_deprecated/building-with-codegen/statements-and-code-blocks.mdx
similarity index 100%
rename from docs/building-with-codegen/statements-and-code-blocks.mdx
rename to docs/_deprecated/building-with-codegen/statements-and-code-blocks.mdx
diff --git a/docs/building-with-codegen/symbol-api.mdx b/docs/_deprecated/building-with-codegen/symbol-api.mdx
similarity index 100%
rename from docs/building-with-codegen/symbol-api.mdx
rename to docs/_deprecated/building-with-codegen/symbol-api.mdx
diff --git a/docs/building-with-codegen/the-editable-api.mdx b/docs/_deprecated/building-with-codegen/the-editable-api.mdx
similarity index 100%
rename from docs/building-with-codegen/the-editable-api.mdx
rename to docs/_deprecated/building-with-codegen/the-editable-api.mdx
diff --git a/docs/building-with-codegen/traversing-the-call-graph.mdx b/docs/_deprecated/building-with-codegen/traversing-the-call-graph.mdx
similarity index 100%
rename from docs/building-with-codegen/traversing-the-call-graph.mdx
rename to docs/_deprecated/building-with-codegen/traversing-the-call-graph.mdx
diff --git a/docs/building-with-codegen/type-annotations.mdx b/docs/_deprecated/building-with-codegen/type-annotations.mdx
similarity index 100%
rename from docs/building-with-codegen/type-annotations.mdx
rename to docs/_deprecated/building-with-codegen/type-annotations.mdx
diff --git a/docs/building-with-codegen/variable-assignments.mdx b/docs/_deprecated/building-with-codegen/variable-assignments.mdx
similarity index 100%
rename from docs/building-with-codegen/variable-assignments.mdx
rename to docs/_deprecated/building-with-codegen/variable-assignments.mdx
diff --git a/docs/cli/about.mdx b/docs/_deprecated/cli/about.mdx
similarity index 100%
rename from docs/cli/about.mdx
rename to docs/_deprecated/cli/about.mdx
diff --git a/docs/cli/create.mdx b/docs/_deprecated/cli/create.mdx
similarity index 100%
rename from docs/cli/create.mdx
rename to docs/_deprecated/cli/create.mdx
diff --git a/docs/cli/expert.mdx b/docs/_deprecated/cli/expert.mdx
similarity index 100%
rename from docs/cli/expert.mdx
rename to docs/_deprecated/cli/expert.mdx
diff --git a/docs/cli/init.mdx b/docs/_deprecated/cli/init.mdx
similarity index 100%
rename from docs/cli/init.mdx
rename to docs/_deprecated/cli/init.mdx
diff --git a/docs/cli/login.mdx b/docs/_deprecated/cli/login.mdx
similarity index 100%
rename from docs/cli/login.mdx
rename to docs/_deprecated/cli/login.mdx
diff --git a/docs/cli/notebook.mdx b/docs/_deprecated/cli/notebook.mdx
similarity index 100%
rename from docs/cli/notebook.mdx
rename to docs/_deprecated/cli/notebook.mdx
diff --git a/docs/cli/reset.mdx b/docs/_deprecated/cli/reset.mdx
similarity index 100%
rename from docs/cli/reset.mdx
rename to docs/_deprecated/cli/reset.mdx
diff --git a/docs/cli/run.mdx b/docs/_deprecated/cli/run.mdx
similarity index 100%
rename from docs/cli/run.mdx
rename to docs/_deprecated/cli/run.mdx
diff --git a/docs/cli/update.mdx b/docs/_deprecated/cli/update.mdx
similarity index 100%
rename from docs/cli/update.mdx
rename to docs/_deprecated/cli/update.mdx
diff --git a/docs/graph-sitter/about.mdx b/docs/_deprecated/graph-sitter/about.mdx
similarity index 100%
rename from docs/graph-sitter/about.mdx
rename to docs/_deprecated/graph-sitter/about.mdx
diff --git a/docs/graph-sitter/advanced-settings.mdx b/docs/_deprecated/graph-sitter/advanced-settings.mdx
similarity index 100%
rename from docs/graph-sitter/advanced-settings.mdx
rename to docs/_deprecated/graph-sitter/advanced-settings.mdx
diff --git a/docs/graph-sitter/community.mdx b/docs/_deprecated/graph-sitter/community.mdx
similarity index 100%
rename from docs/graph-sitter/community.mdx
rename to docs/_deprecated/graph-sitter/community.mdx
diff --git a/docs/graph-sitter/faq.mdx b/docs/_deprecated/graph-sitter/faq.mdx
similarity index 100%
rename from docs/graph-sitter/faq.mdx
rename to docs/_deprecated/graph-sitter/faq.mdx
diff --git a/docs/graph-sitter/getting-started.mdx b/docs/_deprecated/graph-sitter/getting-started.mdx
similarity index 100%
rename from docs/graph-sitter/getting-started.mdx
rename to docs/_deprecated/graph-sitter/getting-started.mdx
diff --git a/docs/graph-sitter/guiding-principles.mdx b/docs/_deprecated/graph-sitter/guiding-principles.mdx
similarity index 100%
rename from docs/graph-sitter/guiding-principles.mdx
rename to docs/_deprecated/graph-sitter/guiding-principles.mdx
diff --git a/docs/graph-sitter/how-it-works.mdx b/docs/_deprecated/graph-sitter/how-it-works.mdx
similarity index 100%
rename from docs/graph-sitter/how-it-works.mdx
rename to docs/_deprecated/graph-sitter/how-it-works.mdx
diff --git a/docs/graph-sitter/ide-usage.mdx b/docs/_deprecated/graph-sitter/ide-usage.mdx
similarity index 100%
rename from docs/graph-sitter/ide-usage.mdx
rename to docs/_deprecated/graph-sitter/ide-usage.mdx
diff --git a/docs/graph-sitter/installation.mdx b/docs/_deprecated/graph-sitter/installation.mdx
similarity index 100%
rename from docs/graph-sitter/installation.mdx
rename to docs/_deprecated/graph-sitter/installation.mdx
diff --git a/docs/graph-sitter/overview.mdx b/docs/_deprecated/graph-sitter/overview.mdx
similarity index 100%
rename from docs/graph-sitter/overview.mdx
rename to docs/_deprecated/graph-sitter/overview.mdx
diff --git a/docs/graph-sitter/work-with-ai.mdx b/docs/_deprecated/graph-sitter/work-with-ai.mdx
similarity index 100%
rename from docs/graph-sitter/work-with-ai.mdx
rename to docs/_deprecated/graph-sitter/work-with-ai.mdx
diff --git a/docs/tutorials/at-a-glance.mdx b/docs/_deprecated/tutorials/at-a-glance.mdx
similarity index 100%
rename from docs/tutorials/at-a-glance.mdx
rename to docs/_deprecated/tutorials/at-a-glance.mdx
diff --git a/docs/tutorials/attributions.mdx b/docs/_deprecated/tutorials/attributions.mdx
similarity index 100%
rename from docs/tutorials/attributions.mdx
rename to docs/_deprecated/tutorials/attributions.mdx
diff --git a/docs/tutorials/build-mcp.mdx b/docs/_deprecated/tutorials/build-mcp.mdx
similarity index 100%
rename from docs/tutorials/build-mcp.mdx
rename to docs/_deprecated/tutorials/build-mcp.mdx
diff --git a/docs/tutorials/codebase-analytics-dashboard.mdx b/docs/_deprecated/tutorials/codebase-analytics-dashboard.mdx
similarity index 100%
rename from docs/tutorials/codebase-analytics-dashboard.mdx
rename to docs/_deprecated/tutorials/codebase-analytics-dashboard.mdx
diff --git a/docs/tutorials/codebase-visualization.mdx b/docs/_deprecated/tutorials/codebase-visualization.mdx
similarity index 100%
rename from docs/tutorials/codebase-visualization.mdx
rename to docs/_deprecated/tutorials/codebase-visualization.mdx
diff --git a/docs/tutorials/converting-default-exports.mdx b/docs/_deprecated/tutorials/converting-default-exports.mdx
similarity index 100%
rename from docs/tutorials/converting-default-exports.mdx
rename to docs/_deprecated/tutorials/converting-default-exports.mdx
diff --git a/docs/tutorials/creating-documentation.mdx b/docs/_deprecated/tutorials/creating-documentation.mdx
similarity index 100%
rename from docs/tutorials/creating-documentation.mdx
rename to docs/_deprecated/tutorials/creating-documentation.mdx
diff --git a/docs/tutorials/deep-code-research.mdx b/docs/_deprecated/tutorials/deep-code-research.mdx
similarity index 100%
rename from docs/tutorials/deep-code-research.mdx
rename to docs/_deprecated/tutorials/deep-code-research.mdx
diff --git a/docs/tutorials/deleting-dead-code.mdx b/docs/_deprecated/tutorials/deleting-dead-code.mdx
similarity index 100%
rename from docs/tutorials/deleting-dead-code.mdx
rename to docs/_deprecated/tutorials/deleting-dead-code.mdx
diff --git a/docs/tutorials/fixing-import-loops-in-pytorch.mdx b/docs/_deprecated/tutorials/fixing-import-loops-in-pytorch.mdx
similarity index 100%
rename from docs/tutorials/fixing-import-loops-in-pytorch.mdx
rename to docs/_deprecated/tutorials/fixing-import-loops-in-pytorch.mdx
diff --git a/docs/tutorials/flask-to-fastapi.mdx b/docs/_deprecated/tutorials/flask-to-fastapi.mdx
similarity index 100%
rename from docs/tutorials/flask-to-fastapi.mdx
rename to docs/_deprecated/tutorials/flask-to-fastapi.mdx
diff --git a/docs/tutorials/increase-type-coverage.mdx b/docs/_deprecated/tutorials/increase-type-coverage.mdx
similarity index 100%
rename from docs/tutorials/increase-type-coverage.mdx
rename to docs/_deprecated/tutorials/increase-type-coverage.mdx
diff --git a/docs/tutorials/manage-feature-flags.mdx b/docs/_deprecated/tutorials/manage-feature-flags.mdx
similarity index 100%
rename from docs/tutorials/manage-feature-flags.mdx
rename to docs/_deprecated/tutorials/manage-feature-flags.mdx
diff --git a/docs/tutorials/managing-typescript-exports.mdx b/docs/_deprecated/tutorials/managing-typescript-exports.mdx
similarity index 100%
rename from docs/tutorials/managing-typescript-exports.mdx
rename to docs/_deprecated/tutorials/managing-typescript-exports.mdx
diff --git a/docs/tutorials/migrating-apis.mdx b/docs/_deprecated/tutorials/migrating-apis.mdx
similarity index 100%
rename from docs/tutorials/migrating-apis.mdx
rename to docs/_deprecated/tutorials/migrating-apis.mdx
diff --git a/docs/tutorials/modularity.mdx b/docs/_deprecated/tutorials/modularity.mdx
similarity index 100%
rename from docs/tutorials/modularity.mdx
rename to docs/_deprecated/tutorials/modularity.mdx
diff --git a/docs/tutorials/neo4j-graph.mdx b/docs/_deprecated/tutorials/neo4j-graph.mdx
similarity index 100%
rename from docs/tutorials/neo4j-graph.mdx
rename to docs/_deprecated/tutorials/neo4j-graph.mdx
diff --git a/docs/tutorials/organize-your-codebase.mdx b/docs/_deprecated/tutorials/organize-your-codebase.mdx
similarity index 100%
rename from docs/tutorials/organize-your-codebase.mdx
rename to docs/_deprecated/tutorials/organize-your-codebase.mdx
diff --git a/docs/tutorials/preparing-your-codebase-for-ai.mdx b/docs/_deprecated/tutorials/preparing-your-codebase-for-ai.mdx
similarity index 100%
rename from docs/tutorials/preparing-your-codebase-for-ai.mdx
rename to docs/_deprecated/tutorials/preparing-your-codebase-for-ai.mdx
diff --git a/docs/tutorials/promise-to-async-await.mdx b/docs/_deprecated/tutorials/promise-to-async-await.mdx
similarity index 100%
rename from docs/tutorials/promise-to-async-await.mdx
rename to docs/_deprecated/tutorials/promise-to-async-await.mdx
diff --git a/docs/tutorials/python2-to-python3.mdx b/docs/_deprecated/tutorials/python2-to-python3.mdx
similarity index 100%
rename from docs/tutorials/python2-to-python3.mdx
rename to docs/_deprecated/tutorials/python2-to-python3.mdx
diff --git a/docs/tutorials/react-modernization.mdx b/docs/_deprecated/tutorials/react-modernization.mdx
similarity index 100%
rename from docs/tutorials/react-modernization.mdx
rename to docs/_deprecated/tutorials/react-modernization.mdx
diff --git a/docs/tutorials/slack-bot.mdx b/docs/_deprecated/tutorials/slack-bot.mdx
similarity index 100%
rename from docs/tutorials/slack-bot.mdx
rename to docs/_deprecated/tutorials/slack-bot.mdx
diff --git a/docs/tutorials/sqlalchemy-1.6-to-2.0.mdx b/docs/_deprecated/tutorials/sqlalchemy-1.6-to-2.0.mdx
similarity index 100%
rename from docs/tutorials/sqlalchemy-1.6-to-2.0.mdx
rename to docs/_deprecated/tutorials/sqlalchemy-1.6-to-2.0.mdx
diff --git a/docs/tutorials/training-data.mdx b/docs/_deprecated/tutorials/training-data.mdx
similarity index 100%
rename from docs/tutorials/training-data.mdx
rename to docs/_deprecated/tutorials/training-data.mdx
diff --git a/docs/tutorials/unittest-to-pytest.mdx b/docs/_deprecated/tutorials/unittest-to-pytest.mdx
similarity index 100%
rename from docs/tutorials/unittest-to-pytest.mdx
rename to docs/_deprecated/tutorials/unittest-to-pytest.mdx
From 032d2826d11781eab35e68db691d1568b5fa0a73 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Mon, 14 Apr 2025 15:56:03 -0700
Subject: [PATCH 09/13] .
---
docs/introduction/about.mdx | 13 +-
docs/introduction/advanced-settings.mdx | 404 ------------------------
docs/introduction/ide-usage.mdx | 178 -----------
docs/introduction/installation.mdx | 125 --------
docs/introduction/prompting.mdx | 0
docs/introduction/work-with-ai.mdx | 86 -----
6 files changed, 4 insertions(+), 802 deletions(-)
delete mode 100644 docs/introduction/advanced-settings.mdx
delete mode 100644 docs/introduction/ide-usage.mdx
delete mode 100644 docs/introduction/installation.mdx
create mode 100644 docs/introduction/prompting.mdx
delete mode 100644 docs/introduction/work-with-ai.mdx
diff --git a/docs/introduction/about.mdx b/docs/introduction/about.mdx
index d7ffe80a1..f6a065a30 100644
--- a/docs/introduction/about.mdx
+++ b/docs/introduction/about.mdx
@@ -13,18 +13,13 @@ iconType: "solid"
## Our Mission
-Our mission is to build fully-autonomous software engineering - the equivalent of self-driving cars for code.
+Our mission is to build fully-autonomous software engineering.
-We believe the highest leverage path to autonomous development is enabling AI agents to "act via code."
+We believe the most effective path towards this goal is through intelligent AI agents that seamlessly integrate into existing developer workflows.
-Just as self-driving cars need sophisticated sensors and controls to navigate the physical world, AI agents need powerful, precise tools to manipulate codebases. We're building that foundational layer: a programmatic interface that lets AI agents express complex code transformations through code itself.
+Our agents connect with tools developers use every day, like GitHub, Slack, and Linear, to automate tasks ranging from fixing bugs and implementing features to writing tests and improving documentation.
-This approach creates a shared language that both humans and AI can use to:
-
-- Express powerful changes with precision and predictability
-- Build sophisticated tools from primitive operations
-- Create and maintain their own abstractions
-- Scale transformations across massive codebases
+By handling routine development tasks, Codegen empowers engineers to focus on higher-level challenges and accelerates the entire software development lifecycle.
## The Team
diff --git a/docs/introduction/advanced-settings.mdx b/docs/introduction/advanced-settings.mdx
deleted file mode 100644
index 08f0e5472..000000000
--- a/docs/introduction/advanced-settings.mdx
+++ /dev/null
@@ -1,404 +0,0 @@
----
-title: "Advanced Settings"
-sidebarTitle: "Advanced Settings"
-icon: "memory"
-iconType: "solid"
----
-
-Codegen's [Codebase](/api-reference/core/Codebase) constructor accepts a `CodebaseConfig` object which is used to configure more advanced behaviors of the graph construction process.
-
-These flags are helpful for debugging problematic repos, optimizing Codegen's performance, or testing unreleased or experimental (potentially backwards-breaking) features.
-
-
-**These are considered experimental features and may change in the future!**
-
-As such, they may have little to no testing or documentation. Many of these flags may also be unsupported in the future!
-
-If you need help, please visit our [community](/introduction/community).
-
-
-
-These configuration options are defined in [src/codegen/configs/models/codebase.py](https://github.com/codegen-sh/codegen/blob/develop/src/codegen/configs/models/codebase.py).
-
-
-# Usage
-
-You can customize the behavior of the graph construction process when initializing a [Codebase](/api-reference/core/Codebase) by passing a `CodebaseConfig` object with the desired configuration flags.
-
-```python
-from codegen import Codebase
-from codegen.configs import CodebaseConfig
-
-# Initialize a Codebase with custom configuration
-codebase = Codebase(
- "",
- config=CodebaseConfig(
- flag1=...,
- flag2=...,
- ...
- )
-)
-```
-
-# Table of Contents
-
-- [debug](#flag-debug)
-- [verify-graph](#flag-verify-graph)
-- [track-graph](#flag-track-graph)
-- [method-usages](#flag-method-usages)
-- [sync-enabled](#flag-sync-enabled)
-- [full-range-index](#flag-full-range-index)
-- [ignore-process-errors](#flag-ignore-process-errors)
-- [disable-graph](#flag-disable-graph)
-- [disable-file-parse](#flag-disable-file-parse)
-- [exp-lazy-graph](#flag-exp-lazy-graph)
-- [generics](#flag-generics)
-- [import-resolution-paths](#flag-import-resolution-paths)
-- [import-resolution-overrides](#flag-import-resolution-overrides)
-- [py-resolve-syspath](#flag-py-resolve-syspath)
-- [ts-dependency-manager](#flag-ts-dependency-manager)
-- [ts-language-engine](#flag-ts-language-engine)
-- [v8-ts-engine](#flag-v8-ts-engine)
-- [unpacking-assignment-partial-removal](#flag-unpacking-assignment-partial-removal)
-
-# Configuration Flags
-
-## Flag: `debug`
-> **Default: `False`**
-
-Enables verbose logging for debugging purposes. In its current form, it enables:
-- Verbose logging when adding nodes to the graph
-- Verbose logging during initial file parsing
-- Additional assertions on graph creation
-- Additional (costly) debug metrics on codebase construction
-- etc.
-
-
-This flag may be very noisy and significantly impact performance. It is generally not recommended to use.
-
-
-## Flag: `verify_graph`
-> **Default: `False`**
-
-Adds assertions for graph state during reset resync. Used to test and debug graph desyncs after a codebase reset.
-
-Runs `post_reset_validation` after a reset resync.
-
-
-This is an internal debug flag.
-
-
-## Flag: `track_graph`
-> **Default: `False`**
-
-Keeps a copy of the original graph before a resync. Used in conjunction with `verify_graph` to test and debug graph desyncs.
-
-Original graph is saved as `ctx.old_graph`.
-
-
-This is an internal debug flag.
-
-
-## Flag: `method_usages`
-> **Default: `True`**
-
-Enables and disables resolving method usages.
-
-**Example Codebase:**
-```python
-class Foo:
- def bar():
- ...
-
-obj = Foo()
-obj.bar() # Method Usage
-```
-
-**Codemod with `method_usages` on:**
-```python
-bar_func = codebase.get_class("Foo").get_method("bar")
-len(bar_func.usages) # 1
-bar_func.usages # [obj.bar()]
-```
-
-**Codemod with `method_usages` off:**
-```python
-bar_func = codebase.get_class("Foo").get_method("bar")
-len(bar_func.usages) # 0
-bar_func.usages # []
-```
-
-Method usage resolution could be disabled for a marginal performance boost. However, it is generally recommended to leave it enabled.
-
-## Flag: `sync_enabled`
-> **Default: `False`**
-
-Enables or disables graph sync during `codebase.commit`.
-
-
-Implementation-specific details on sync graph can be found [here](https://github.com/codegen-sh/codegen/blob/develop/architecture/6.%20incremental-computation/C.%20Graph%20Recomputation.md).
-
-
-This section won't go into the specific details of sync graph, but the general idea is that enabling sync graph will update the Codebase object to whatever new changes were made.
-
-**Example with `sync_enabled` on:**
-```python
-file = codebase.get_file(...)
-file.insert_after("foobar = 1")
-codebase.commit()
-
-foobar = codebase.get_symbol("foobar")
-assert foobar # foobar is available after commit / graph sync
-```
-
-**Example with `sync_enabled` disabled:**
-```python
-file = codebase.get_file(...)
-file.insert_after("foobar = 1")
-
-foobar = codebase.get_symbol("foobar", optional=True)
-assert not foobar # foobar is not available after commit
-```
-
-
-Enabling sync graph will have a performance impact on codebase commit, but will also unlock a bunch of operations that were previously not possible.
-
-
-## Flag: `full_range_index`
-> **Default: `False`**
-
-By default, Codebase maintains an internal range-to-node index for fast lookups. (i.e. `bytes 120 to 130 maps to node X`).
-For optimization purposes, this only applies to nodes defined and handled by `parser.py`.
-
-Enabling `full_range_index` will create an additional index that maps **all** tree-sitter ranges to nodes.
-This can be useful for debugging or when you need to build any applications that require a full range-to-node index (i.e. a codebase tree lookup).
-
-
-This flag **significantly** increases memory usage!
-
-
-## Flag: `ignore_process_errors`
-> **Default: `True`**
-
-Controls whether to ignore errors that occur during external process execution (such as dependency manager or language engine).
-
-Disabling `ignore_process_errors` would make Codegen fail on errors that would otherwise be logged then ignored.
-
-## Flag: `disable_graph`
-> **Default: `False`**
-
-Disables the graph construction process. Any operations that require the graph will no longer work. (In other words, this turns off import resolution and usage/dependency resolution)
-
-Functions that operate purely on AST such as getting and editing parameters or modifying function and class definitions will still work.
-
-
-For codemods that do not require the graph (aka only AST/Syntax-level changes), **disabling graph parse could yield a 30%-40% decrease in parse time and memory usage**!
-
-
-## Flag: `disable_file_parse`
-> **Default: `False`**
-
-Disables **ALL** parsing, including file and graph parsing. This essentially treats all codebases as the "UNSUPPORTED" language mode.
-
-Nearly all functions except for editing primitives like `codebase.get_file` and `file.edit` will no longer work.
-
-
-This flag is useful for any usages of Codegen that do **NOT** require any AST/CST/Graph parsing. (i.e. using Codegen purely as a file editing harness)
-
-If this is your use case, this **could decrease parse and memory usage by 95%.**
-
-
-## Flag: `exp_lazy_graph`
-> **Default: `False`**
-
-This experimental flag pushes the graph creation back until the graph is needed. This is an experimental feature and may have some unintended consequences.
-
-**Example Codemod:**
-```python
-from codegen import Codebase
-from codegen.configs import CodebaseConfig
-
-# Enable lazy graph parsing
-codebase = Codebase("", config=CodebaseConfig(exp_lazy_graph=True))
-
-# The codebase object will be created immediately with no parsing done
-# These all do not require graph parsing
-codebase.files
-codebase.directories
-codebase.get_file("...")
-
-# These do require graph parsing, and will create the graph only if called
-codebase.get_function("...")
-codebase.get_class("...")
-codebase.imports
-```
-
-
-This may have a very slight performance boost. Use at your own risk!
-
-
-## Flag: `generics`
-> **Default: `True`**
-
-Enables and disables generic type resolution.
-
-**Example Codebase:**
-```python
-class Point:
- def scale(cls, n: int):
- pass
-
-class List[T]():
- def pop(self) -> T:
- ...
-
-l: List[Point] = []
-l.pop().scale(1) # Generic Usage
-```
-
-**Codemod with `generics` on:**
-```python
-bar_func = codebase.get_class("Point").get_method("scale")
-len(bar_func.usages) # 1
-bar_func.usages # [l.pop().scale(1)]
-```
-
-**Codemod with `generics` off:**
-```python
-bar_func = codebase.get_class("Point").get_method("scale")
-len(bar_func.usages) # 0
-bar_func.usages # []
-```
-
-
-Generic resolution is still largely WIP and experimental, and may not work in all cases. In some rare circumstances, disabling generics may result in a significant performance boost.
-
-
-## Flag: `import_resolution_paths`
-> **Default: `[]`**
-
-Controls alternative paths to resolve imports from.
-
-**Example Codebase:**
-```python
-# a/b/c/src.py
-def update():
- pass
-
-# consumer.py
-from c import src as operations
-
-operations.update()
-```
-
-**Codemod:**
-```python
-codebase.ctx.config.import_resolution_paths = ["a/b"]
-```
-
-## Flag: `import_resolution_overrides`
-> **Default: `{}`**
-
-Controls import path overrides during import resolution.
-
-**Example**
-`from a.b.c import d` with the override `a/b` -> `foo/bar` will internally resolve the import as `from foo.bar.c import d`.
-
-## Flag: `py_resolve_syspath`
-> **Default: `False`**
-
-Enables and disables resolution of imports from `sys.path`.
-
-
-For this to properly work, you must also set `allow_external` to `True`.
-
-
-## Flag: `allow_external`
-> **Default: `False`**
-
-Enables resolving imports, files, modules, and directories from outside of the repo path.
-
-
-Turning this flag off may allow for bad actors to access files outside of the repo path! Use with caution!
-
-
-## Flag: `ts_dependency_manager`
-> **Default: `False`**
-
-
-**This is an internal flag used for Codegen Cloud and should not be used externally!**
-
-This flag **WILL** nuke any existing `node_modules` folder!
-
-
-
-This flag also assumes many constants for Codegen Cloud. Very likely this will not work if run locally.
-
-Instead, just install `node_modules` as normal (either through `npm`, `pnpm`, or `yarn`) and skip this setting!
-
-
-Enables Codegen's internal dependency installer for TypeScript. This will modify `package.json` and install the bare minimum set of installable dependencies.
-
-
-More documentation on TypeScript dependency manager can be found [here](https://github.com/codegen-sh/codegen/blob/develop/architecture/external/dependency-manager.md)
-
-
-## Flag: `ts_language_engine`
-> **Default: `False`**
-
-
-This feature was built primarily with Codegen Cloud in mind. As such, this assumes a valid NodeJS and TypeScript environment.
-
-
-Enables using the TypeScript compiler to extract information from the codebase. Enables commands such as `inferred_return_type`.
-
-
-This will increase memory usage and parsing time. Larger repos may even hit resource constraints with the bundled TypeScript compiler integration.
-
-
-## Flag: `v8_ts_engine`
-> **Default: `False`**
-
-
-This feature flag requires `ts_language_engine` to be enabled as well.
-
-
-Enables using the **V8-based TypeScript compiler** to extract information from the codebase. Enables commands such as `inferred_return_type`.
-
-The V8 implementation (as opposed to the default external-process based implementation) is less stable, but provides the entire TypeScript API to be used from within Codegen.
-
-
-This will increase memory usage and parsing time. Larger repos may even hit resource constraints with the V8-based TypeScript compiler integration.
-
-
-## Flag: `unpacking_assignment_partial_removal`
-> **Default: `False`**
-
-Enables smarter removal of unpacking assignments.
-
-**Example Codebase:**
-```python
-a, b, c = (1, 2, 3)
-```
-
-**Codemod with `unpacking_assignment_partial_removal` on:**
-```python
-file = codebase.get_file(...)
-b = file.get_symbol("b")
-b.remove()
-codebase.commit()
-
-file.symbols # [a, c]
-file.source # "a, c = (1, 3)"
-```
-
-**Codemod with `unpacking_assignment_partial_removal` off:**
-```python
-file = codebase.get_file(...)
-b = file.get_symbol("b")
-b.remove()
-codebase.commit()
-
-file.symbols # []
-file.source # ""
-```
diff --git a/docs/introduction/ide-usage.mdx b/docs/introduction/ide-usage.mdx
deleted file mode 100644
index 3c58d39ab..000000000
--- a/docs/introduction/ide-usage.mdx
+++ /dev/null
@@ -1,178 +0,0 @@
----
-title: "Using Codegen in Your IDE"
-sidebarTitle: "IDE Usage"
-icon: "window"
-iconType: "solid"
----
-
-Get up and running with Codegen programs in IDEs like VSCode, Cursor and PyCharm.
-
-Make sure to [install and initialize](/introduction/installation) Codegen with `codegen init`
-
-## Configuring your IDE Interpreter
-
-Codegen creates a custom Python environment in `.codegen/.venv`. Configure your IDE to use this environment for the best development experience.
-
-
-
- 1. Install the VSCode Python Extensions for LSP and debugging support. We recommend Python, Pylance and Python Debugger for the best experience.
-
- 2. Open the Command Palette (Cmd/Ctrl + Shift + P)
- 3. Type "Python: Select Interpreter"
-
- 4. Choose "Enter interpreter path"
- 5. Navigate to and select:
- ```bash
- .codegen/.venv/bin/python
- ```
-
- Alternatively, create a `.vscode/settings.json`:
- ```json
- {
- "python.defaultInterpreterPath": "${workspaceFolder}/.codegen/.venv/bin/python",
- "python.analysis.extraPaths": [
- "${workspaceFolder}/.codegen/.venv/lib/python3.12/site-packages"
- ]
- }
- ```
-
-
-
- 1. Open PyCharm Settings/Preferences
- 2. Navigate to "Project > Python Interpreter"
- 3. Click the gear icon βοΈ and select "Add"
- 4. Choose "Existing Environment"
- 5. Set interpreter path to:
- ```bash
- .codegen/.venv/bin/python
- ```
-
-
-
-
-
-## MCP Server Setup
-This is an optional step but highly recommended if your IDE supports MCP support and you use AI Agents.
-The MCP server is a local server that allows your AI Agent to interact with the Codegen specific tools,
-it will allow an agent to:
-- ask an expert to create a codemod
-- improve a codemod
-- get setup instructions
-
-### IDE Configuration
-#### Cline
-Add this to your cline_mcp_settings.json:
-```json
-{
- "mcpServers": {
- "codegen-cli": {
- "command": "uv",
- "args": [
- "--directory",
- "/codegen-sdk/src/codegen/cli/mcp",
- "run",
- "server.py"
- ]
- }
- }
-}
-```
-
-
-#### Cursor:
-Under the `Settings` > `Feature` > `MCP Servers` section, click "Add New MCP Server" and add the following:
-
-```
-Name: codegen-mcp
-Type: Command
-Command: uv --directory /codegen-sdk/src/codegen/cli/mcp run server.py
-```
-
-
-## Index Codegen Docs
-#### Cursor:
-If you use Cursor you'll be able to configure the IDE to index the Codegen docs. To do so go to `Settings` > `Features` > `Docs`
-and then click on `Add new docs`. We recommend using this url to index the API reference:
-```
-https://docs.codegen.com/api-reference/index
-```
-
-
-## Create a New Codemod
-
-Generate the boilerplate for a new code manipulation program using [codegen create](/cli/create):
-
-```bash
-codegen create organize-types \
- -d "Move all TypeScript types to \
- into a centralized types.ts file"
-```
-
-
- Passing in `-d --description` will get an LLM expert to compose an initial version for you. This requires a Github account registered on [codegen.sh](https://codegen.sh)
-
-
-This will:
-1. Create a new codemod in `.codegen/codemods/organize_types/`
-2. Generate a custom `system-prompt.txt` based on your task
-3. Set up the basic structure for your program
-
-
-The generated codemod includes type hints and docstrings, making it easy to get IDE autocompletion and documentation.
-
-
-## Iterating with Chat Assistants
-
-When you do `codegen init`, you will receive a [system prompt optimized for AI consumption](/introduction/work-with-ai) at `.codegen/codegen-system-prompt.txt`.
-
-If you reference this file in "chat" sessions with Copilot, Cursor, Cody, etc., the assistant will become fluent in Codegen.
-
-
-
- Collaborating with Cursor's assistant and the Codegen system prompt
-
-
-In addition, when you [create](/cli/create) a codemod with "-d", Codegen generates an optimized system prompt in `.codegen/codemods/{name}/{name}-system-prompt.txt`. This prompt contains:
-- Relevant Codegen API documentation
-- Examples of relevant transformations
-- Context about your specific task
-
-
-You can also drag and drop the system prompt ([available here](/introduction/work-with-ai))file directly into chat windows like ChatGPT or Claude for standalone help.
-
-
-## Running and Testing Codemods
-
-```bash
-# Run => write changes to disk
-codegen run organize-types
-
-# Reset changes on disk
-codegen reset
-```
-
-You can also run the program directly via `.codegen/.venv/bin/python path/to/codemod.py` or via your editor's debugger
-
-## Viewing Changes
-
-We recommend viewing changes in your IDE's native diff editor.
-
-
-## What's Next
-
-
-
- See real-world examples of codemods in action.
-
-
- Learn about Codegen's core concepts and features
-
-
diff --git a/docs/introduction/installation.mdx b/docs/introduction/installation.mdx
deleted file mode 100644
index 41188c64b..000000000
--- a/docs/introduction/installation.mdx
+++ /dev/null
@@ -1,125 +0,0 @@
----
-title: "Installation"
-sidebarTitle: "Installation"
-icon: "download"
-iconType: "solid"
----
-
-Install and set up Codegen in your development environment.
-
-#### We currently support:
-- Running Codegen in Python 3.12 - 3.13 (recommended: Python 3.13+)
-- macOS and Linux
- - macOS is supported
- - Linux is supported on x86_64 and aarch64 with glibc 2.34+
- - Windows is supported via WSL. See [here](https://docs.codegen.com/building-with-codegen/codegen-with-wsl) for more details.
-- Python, Typescript, Javascript and React codebases
-
-## Prerequisites
-
-We recommend using [uv](https://github.com/astral-sh/uv) for installation. If you haven't installed `uv` yet:
-```bash
-curl -LsSf https://astral.sh/uv/install.sh | sh
-```
-
-## Installing Codegen
-
-```bash
-uv tool install codegen --python 3.13
-```
-
-
-
-This makes the `codegen` command available globally in your terminal, while keeping its dependencies isolated.
-
-
-## Quick Start
-
-Let's walk through a minimal example of using Codegen in a project:
-
-1. Navigate to your repository:
- ```bash
- cd path/to/your/project
- ```
-
-2. Initialize Codegen in your project with [codegen init](/cli/init):
- ```bash
- codegen init
- ```
-
- This creates a `.codegen/` directory with:
- ```bash
- .codegen/
- βββ .venv/ # Python virtual environment (gitignored)
- βββ config.toml # Project configuration
- βββ codemods/ # Your codemod implementations
- βββ jupyter/ # Jupyter notebooks for exploration
- βββ codegen-system-prompt.txt # AI system prompt
- ```
-
-3. Create your first codemod with [codegen create](/cli/create):
- ```bash
- codegen create organize-imports \
- -d "Sort and organize imports according to PEP8"
- ```
-
- The `-d` flag in `codegen create` generates an AI-powered implementation. This requires a Github account registered on [codegen.sh](https://codegen.sh)
-
-
-
-
-4. Run your codemod with [codegen run](/cli/run):
- ```bash
- codegen run organize-imports
- ```
-
-5. Reset any filesystem changes (excluding `.codegen/*`) with [codegen reset](/cli/reset):
- ```bash
- codegen reset
- ```
-
-## Troubleshooting
-
-Having issues? Here are some common problems and their solutions:
-
-- **I'm hitting an UV error related to `[[ packages ]]`**: This means you're likely using an outdated version of UV. Try updating to the latest version with: `uv self update`.
-- **I'm hitting an error about `No module named 'codegen.sdk.extensions.utils'`**: The compiled cython extensions are out of sync. Update them with `uv sync --reinstall-package codegen`.
-- **I'm hitting a `RecursionError: maximum recursion depth exceeded` error while parsing my codebase**: If you are using python 3.12, try upgrading to 3.13. If you are already on 3.13, try upping the recursion limit with `sys.setrecursionlimit(10000)`.
-
-
-For more help, join our [community Slack](/introduction/community) or check the [FAQ](/introduction/faq).
-
-
-## Next Steps
-
-
-
- Learn how to use Codegen effectively in VSCode, Cursor, and other IDEs.
-
-
- Follow step-by-step tutorials for common code transformation tasks.
-
-
- Leverage AI assistants like Copilot, Cursor and Devin
-
-
- Learn more about building with Codegen
-
-
-
diff --git a/docs/introduction/prompting.mdx b/docs/introduction/prompting.mdx
new file mode 100644
index 000000000..e69de29bb
diff --git a/docs/introduction/work-with-ai.mdx b/docs/introduction/work-with-ai.mdx
deleted file mode 100644
index c826aad75..000000000
--- a/docs/introduction/work-with-ai.mdx
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: "Working with AI"
-sidebarTitle: "AI Integration"
-icon: "microchip"
-iconType: "solid"
----
-
-Codegen is designed to be used with AI assistants. This document describes how to use Codegen with common AI tools, including Copilot, Cursor, Devin and more.
-
-## System Prompt
-
-Codegen provides a `.txt` file that you can drag-and-drop into any chat assistant. This is roughly 60k tokens and will enable chat assistants like, ChatGPT, Claude 3.5 etc. to build effectively with Codegen.
-
-import {
- CODEGEN_SYSTEM_PROMPT
-} from "/snippets/links.mdx";
-
-
- Download System Prompt
-
-
-Learn about leveraging this in IDE chat assistants like Cursor [here](/introduction/ide-usage#iterating-with-chat-assistants)
-
-## Generating System Prompts
-
-The [Codegen CLI](/cli/about) provides commands to generate `.md` files that can be fed to any AI assistant for more accurate and contextual help.
-
-When you create a new codemod via [codegen create](/cli/create):
-
-```bash
-codegen create delete-dead-imports . --description "Delete unused imports"
-```
-
-Codegen automatically generates an optimized ["system prompt"](https://news.ycombinator.com/item?id=37880023) that includes:
-
-- An introduction to Codegen
-- Codegen API documentation
-- Examples of relevant transformations
-
-You can find this generated prompt in the `.codegen/prompts/-system-prompt.md` file.
-
-
- All contents of the `.codegen/prompts` directory are by default ignored the
- `.gitignore` file. after running [codegen init](/cli/init)
-
-
-This `.md` file can be used with any AI assistant (Claude, GPT-4, etc.) to get more accurate and contextual help.
-
-## Example Workflow
-
-
-
- Use the [create command](/cli/create) with a detailed description of what you want to accomplish:
- ```bash
- codegen create modernize-components . --description "Convert class components to functional components with hooks"
- ```
-
-
- Check the AI context that Codegen generated for your transformation: ```bash
- cat codegen-sh/codemods/modernize-components/prompt.md ```
-
-
-
- Reference your codemod when asking questions to get contextual help: ```
- @codegen-sh/codemods/modernize-components How should I handle
- componentDidMount? ```
-
-
-
- The AI will understand you're working on React modernization and provide relevant suggestions about using useEffect hooks and other modern React patterns.
-
-
-
-## Copilot, Cursor and Windsurf (IDEs)
-
-When using IDE chat assistants, you can leverage Codegen's context by mentioning your codemod in composer mode:
-
-```bash
-@.codegen/codemods/upgrade-react18 @.codegen/prompts/system-prompt.md
-```
-
-This will ensure that the IDE's native chat model is aware of the APIs and common patterns for Codegen.
-
-## Devin, OpenHands and Semi-autonomous Code Agents
-
-Coming soon!
From 9a5ae6cbaeec88e83d5cfeee42a6be06811e8576 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Mon, 14 Apr 2025 16:49:24 -0700
Subject: [PATCH 10/13] .
---
docs/introduction/prompting.mdx | 36 +++++++++++++++++++++++++++++++++
docs/mint.json | 1 +
2 files changed, 37 insertions(+)
diff --git a/docs/introduction/prompting.mdx b/docs/introduction/prompting.mdx
index e69de29bb..06f3b608d 100644
--- a/docs/introduction/prompting.mdx
+++ b/docs/introduction/prompting.mdx
@@ -0,0 +1,36 @@
+---
+title: "Effective Prompting"
+sidebarTitle: "Prompting"
+icon: "lightbulb"
+iconType: "solid"
+---
+
+To get the best results from Codegen, treat it like a skilled teammate: provide clear, specific instructions and sufficient context. Vague requests lead to ambiguous outcomes.
+
+
+ Codegen is based on Anthropic's Claude 3.7. You can prompt it similarly to
+ ChatGPT or other LLM-based assistants
+
+
+## The Core Principle: Specificity
+
+Instead of "Fix the user service," try:
+
+> In the `my-web-app` repo (PR #42), refactor the `UserService` class in `src/services/user.ts` to use the `UserRepository` pattern shown in `ProductService`/`ProductRepository`.
+
+If there are specific implementation details you want included, make sure to specify. For example:
+
+> Ensure all tests in `tests/services/user.test.ts` pass and add new tests for the repository with 90%+ coverage. Update the diagram in `docs/architecture/user-service.md`.
+
+## Elements of a Strong Prompt
+
+1. **Scope:** What repository, branch, or files are involved? (e.g., `my-web-app` repo, `PR #42`, `src/services/user.ts`)
+2. **Goal:** What is the high-level objective? (e.g., Refactor `UserService`, improve testability)
+3. **Tasks:** What specific actions should the agent take? Use a numbered or bulleted list for clarity. (e.g., Extract logic to `UserRepository`, use dependency injection, update tests, update diagram)
+4. **Context/Patterns:** Are there existing patterns, examples, or documentation to reference? (e.g., `ProductService`, `ProductRepository`)
+5. **Success Criteria:** How will you know the task is done correctly? (e.g., Tests pass, 90%+ coverage, diagram updated)
+
+
+ Clear, detailed prompts empower Codegen agents to deliver accurate results
+ faster, significantly streamlining your workflow.
+
diff --git a/docs/mint.json b/docs/mint.json
index 091a684a7..40c910e34 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -69,6 +69,7 @@
"pages": [
"introduction/overview",
"introduction/community",
+ "introduction/prompting",
"introduction/about",
"introduction/faq"
]
From b4173f561a961c5942564c458f5a843b04c5be5e Mon Sep 17 00:00:00 2001
From: jayhack
Date: Mon, 14 Apr 2025 16:55:13 -0700
Subject: [PATCH 11/13] .
---
docs/introduction/capabilities.mdx | 51 ++++++++++++++++++++++++++++++
docs/mint.json | 3 +-
2 files changed, 53 insertions(+), 1 deletion(-)
create mode 100644 docs/introduction/capabilities.mdx
diff --git a/docs/introduction/capabilities.mdx b/docs/introduction/capabilities.mdx
new file mode 100644
index 000000000..aad0b4c15
--- /dev/null
+++ b/docs/introduction/capabilities.mdx
@@ -0,0 +1,51 @@
+---
+title: "Agent Capabilities"
+sidebarTitle: "Capabilities"
+icon: "gear"
+iconType: "solid"
+---
+
+Codegen agents come equipped with a versatile set of tools and capabilities designed to seamlessly integrate into your development workflow and automate a wide range of tasks.
+
+## Integrated Tool Suites
+
+Our agents have deep integrations with the tools your team already uses:
+
+
+
+ Manage repositories, review PRs, comment on issues, create branches, commit
+ code, and more.
+
+
+ Update ticket statuses, add comments, link PRs, create new issues based on
+ findings, and manage project boards.
+
+
+ Send notifications, ask for clarification, report progress, and interact
+ directly with your team.
+
+
+
+## Core Features
+
+Beyond specific tool integrations, Codegen agents possess fundamental capabilities:
+
+
+
+ Safely run code, install dependencies, and test changes in an isolated
+ environment.
+
+
+ Access up-to-date information, research libraries, find documentation, and
+ learn about new technologies.
+
+
+ Run linters, formatters, build tools, or any other necessary command-line
+ operations within the sandbox.
+
+
+
+
+ These capabilities allow Codegen agents to handle complex tasks that require
+ interacting with multiple systems, just like a human developer.
+
diff --git a/docs/mint.json b/docs/mint.json
index 40c910e34..1ccefba1f 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -68,8 +68,9 @@
"group": "Introduction",
"pages": [
"introduction/overview",
- "introduction/community",
+ "introduction/capabilities",
"introduction/prompting",
+ "introduction/community",
"introduction/about",
"introduction/faq"
]
From 598e18ad3571e6957f47eb0bee52480d2d438589 Mon Sep 17 00:00:00 2001
From: jayhack
Date: Mon, 14 Apr 2025 17:16:17 -0700
Subject: [PATCH 12/13] .
---
docs/images/linear.png | Bin 0 -> 1226921 bytes
docs/integrations/github.mdx | 43 +++++++++++++++++++++++++++++
docs/integrations/linear.mdx | 42 ++++++++++++++++++++++++++++
docs/integrations/sandboxes.mdx | 34 +++++++++++++++++++++++
docs/integrations/slack.mdx | 42 ++++++++++++++++++++++++++++
docs/integrations/web-search.mdx | 39 ++++++++++++++++++++++++++
docs/introduction/capabilities.mdx | 2 +-
docs/mint.json | 10 +++++++
8 files changed, 211 insertions(+), 1 deletion(-)
create mode 100644 docs/images/linear.png
create mode 100644 docs/integrations/github.mdx
create mode 100644 docs/integrations/linear.mdx
create mode 100644 docs/integrations/sandboxes.mdx
create mode 100644 docs/integrations/slack.mdx
create mode 100644 docs/integrations/web-search.mdx
diff --git a/docs/images/linear.png b/docs/images/linear.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3d2398edbdaceafe086115d3bc1ab24bf4e9859
GIT binary patch
literal 1226921
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