From 6865859cc9e9009d935892707afb3363302541b1 Mon Sep 17 00:00:00 2001 From: jayhack Date: Thu, 13 Mar 2025 18:33:06 -0700 Subject: [PATCH 1/4] . --- docs/gen/capabilities.mdx | 92 ++++ docs/gen/common-commands.mdx | 98 ++++ docs/gen/introduction.mdx | 15 + docs/gen/quickstart.mdx | 57 +++ docs/images/codegen-bot-intro.png | Bin 0 -> 151544 bytes docs/mint.json | 767 +++++++++++++++--------------- 6 files changed, 649 insertions(+), 380 deletions(-) create mode 100644 docs/gen/capabilities.mdx create mode 100644 docs/gen/common-commands.mdx create mode 100644 docs/gen/introduction.mdx create mode 100644 docs/gen/quickstart.mdx create mode 100644 docs/images/codegen-bot-intro.png diff --git a/docs/gen/capabilities.mdx b/docs/gen/capabilities.mdx new file mode 100644 index 000000000..d0d7af827 --- /dev/null +++ b/docs/gen/capabilities.mdx @@ -0,0 +1,92 @@ +--- +title: "Capabilities" +--- + +Codegen is powered by a suite of specialized tools that enable it to interact with your development environment and provide intelligent assistance. This page details the tools available to Codegen and how they enhance your workflow. + +## Core Agent + +At the heart of Codegen is a powerful AI code agent that can analyze, understand, and manipulate codebases. The agent combines large language model capabilities with specialized tools to provide intelligent code assistance. It can: + +- Analyze and understand complex codebases +- Make intelligent code edits and refactoring suggestions +- Handle code organization and dependency management +- Generate and update documentation +- Assist with debugging and problem-solving + + + Want to build your own code agent? Check out our [Build Code Agent + Tutorial](/docs/tutorials/build-code-agent) to learn how to create custom + agents using our open-source SDK! + + +## Communication Tools + +- **SlackSendMessageTool**: Allows Codegen to send messages in Slack channels and threads, providing responses to your queries and sharing information with your team. + +## GitHub Integration Tools + +Codegen includes a comprehensive set of GitHub tools: + +- **GithubCheckoutPRTool**: Checks out pull requests to your local environment for review and testing. + +- **GithubCreatePRTool**: Creates new pull requests from your current branch, including title, description, and target branch. + +- **GithubCreatePRCommentTool**: Adds comments to pull requests for feedback and team communication. + +- **GithubCreatePRReviewCommentTool**: Provides inline comments on specific code changes within pull requests. + +- **GithubEditPRTool**: Modifies existing pull requests, including updating titles, descriptions, and other metadata. + +- **GithubSearchIssuesTool**: Searches for GitHub issues based on various criteria like status, assignee, or labels. + +- **GithubViewPRTool**: Retrieves and displays information about specific pull requests. + +- **GithubViewPRCheckTool**: Checks the status of CI/CD and other automated checks on pull requests. + +- **GithubViewCommitHistoryTool**: Shows the commit history of a repository or specific branch. + +- **GithubViewCommitTool**: Displays details about specific commits, including changes made. + +## Linear Integration Tools (Optional) + +For teams using Linear for project management, Codegen offers: + +- **LinearGetIssueTool**: Retrieves details about specific Linear issues. + +- **LinearGetIssueCommentsTool**: Fetches comments on Linear issues for context and history. + +- **LinearCommentOnIssueTool**: Adds comments to Linear issues for team communication. + +- **LinearSearchIssuesTool**: Searches for Linear issues based on various criteria. + +- **LinearCreateIssueTool**: Creates new issues in Linear with appropriate metadata. + +- **LinearGetTeamsTool**: Retrieves information about teams in your Linear organization. + +## Code Intelligence Tools + +In addition to platform-specific tools, Codegen includes powerful code intelligence capabilities: + +- **Code Analysis**: Understands and explains code structure and functionality. + +- **Debugging Assistance**: Helps identify and fix bugs in your code. + +- **Refactoring Suggestions**: Recommends improvements to code quality and structure. + +- **Documentation Generation**: Creates clear documentation for your code. + +## How Codegen Uses These Tools + +Codegen's AI brain (powered by Claude 3.7 Sonnet) intelligently selects and combines these tools to: + +1. Understand your requests through natural language in Slack +2. Determine the most appropriate tools to fulfill your request +3. Execute the necessary actions across GitHub, Linear, and your codebase +4. Provide clear, helpful responses back in Slack + +This seamless integration allows you to manage your entire development workflow through simple conversations, without having to switch between different platforms and interfaces. + +## Getting Started + +Ready to experience the power of Codegen? Check out our [Quickstart Guide](/docs/gen/quickstart) to set up Codegen for your team, and explore [Common Commands](/docs/gen/common-commands) to see how to interact with these tools through natural language. diff --git a/docs/gen/common-commands.mdx b/docs/gen/common-commands.mdx new file mode 100644 index 000000000..dc70fa028 --- /dev/null +++ b/docs/gen/common-commands.mdx @@ -0,0 +1,98 @@ +--- +title: 'Common Commands' +description: 'Frequently used commands and examples for the AI development assistant' +--- + +# Common Commands + +This guide covers the most frequently used commands and interactions with our AI development assistant. All commands start with mentioning the bot (`@botname`). + +## GitHub-Related Commands + +### Pull Requests +```bash +# Create a new PR +@botname create PR for my current branch + +# List your PRs +@botname show my open PRs +@botname list PRs assigned to me + +# Review a PR +@botname review PR #123 +``` + +### Code Review +```bash +# Request a code review +@botname review my changes +@botname explain the changes in PR #123 + +# Get suggestions for improvement +@botname suggest improvements for PR #123 +``` + +## Linear Issue Management + +### Viewing Issues +```bash +# Show your assigned issues +@botname show my tasks +@botname list my Linear issues + +# View specific issue +@botname show issue LIN-123 +``` + +### Issue Creation and Updates +```bash +# Create new issue +@botname create Linear issue: Add user authentication + +# Update issue status +@botname move LIN-123 to In Progress +@botname update status of LIN-123 to Done +``` + +## Code Assistance + +### Code Questions +```bash +# Ask about code +@botname explain how this code works: [paste code] +@botname what does this function do? + +# Get code suggestions +@botname suggest a better way to write this +@botname how can I improve this code? +``` + +### Documentation +```bash +# Generate documentation +@botname document this function +@botname explain this code block +``` + +## General Help + +### Bot Information +```bash +# Get help +@botname help +@botname show available commands + +# Check status +@botname status +``` + +## Tips and Best Practices + +1. Be specific in your requests - include relevant details like PR numbers or issue IDs +2. For code-related questions, always provide context or paste the relevant code +3. Use thread replies for ongoing conversations about the same topic +4. When creating issues or PRs, provide clear descriptions and context + +## Advanced Usage + +For more advanced features and detailed commands, check out our [Expert Guide](/docs/cli/expert). You can also customize the bot's behavior and set up team-specific workflows through the configuration settings. \ No newline at end of file diff --git a/docs/gen/introduction.mdx b/docs/gen/introduction.mdx new file mode 100644 index 000000000..cb0ea95cc --- /dev/null +++ b/docs/gen/introduction.mdx @@ -0,0 +1,15 @@ +--- +title: "codegen: generalist SWE agent" +sidebarTitle: "Introduction" +--- + + + +Codegen is an open-source AI development assistant, built on our powerful `CodeAgent` framework. It seamlessly integrates with your existing development tools - Slack for communication, GitHub for code management, and Linear for project tracking - to provide an intelligent coding companion right where you work. + + +This guide will help you set up and configure our AI-powered development assistant with Slack, GitHub, and Linear integrations. Follow these steps to get started quickly. + + + Install codegen via OAuth with Github, Slack and Linear + diff --git a/docs/gen/quickstart.mdx b/docs/gen/quickstart.mdx new file mode 100644 index 000000000..7d2d7d55d --- /dev/null +++ b/docs/gen/quickstart.mdx @@ -0,0 +1,57 @@ +--- +title: 'Quickstart Guide' +description: 'Get started with our AI-powered development assistant' +--- + +# Quickstart Guide + + + + +This guide will help you set up and configure our AI-powered development assistant with Slack, GitHub, and Linear integrations. Follow these steps to get started quickly. + +## Step 1: Install Slack Bot + +Add to Slack + +1. Visit our Slack App Directory listing [coming soon] +2. Click "Add to Slack" +3. Select the workspace where you want to install the bot +4. Authorize the required permissions +5. Once installed, you'll see the bot in your workspace's apps + +The bot will now be available in your Slack workspace. You can interact with it by mentioning `@botname` in any channel where it's present. + +## Step 2: Configure GitHub Integration + +GitHub integration allows the bot to interact with your repositories, create PRs, and provide code-related assistance. + +1. Go to your Slack workspace settings +2. Navigate to the bot's configuration page +3. Click on "Connect GitHub" +4. Authorize the GitHub integration +5. Select the repositories you want the bot to have access to + +## Step 3: Set Up Linear Integration (Optional) + +Linear integration enables project management features and issue tracking capabilities. + +1. In your Slack workspace settings +2. Go to the bot's configuration page +3. Click on "Connect Linear" +4. Authorize the Linear integration +5. Choose the teams and projects you want to connect + +## Verification + +To verify everything is working: + +1. In Slack, type `@botname help` to see available commands +2. Try a simple GitHub command like `@botname list my PRs` +3. If you set up Linear, try `@botname show my tasks` + +## Next Steps + +- Check out our [Common Commands](/docs/common-commands) guide for everyday usage +- Explore advanced features in our [Expert Guide](/docs/cli/expert) +- Join our community for support and tips [coming soon] diff --git a/docs/images/codegen-bot-intro.png b/docs/images/codegen-bot-intro.png new file mode 100644 index 0000000000000000000000000000000000000000..2cdf5de2d94c0e69529c087f16aaf1106c67388f GIT binary patch literal 151544 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⋘&m`yfN5rSk%+j@v|LYawi3D2 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

Jj?ZGhzJufRVX<-! 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 literal 0 HcmV?d00001 diff --git a/docs/mint.json b/docs/mint.json index 5a33f2590..d1bcf3bc0 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -1,381 +1,388 @@ { - "$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" - } - ], - "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/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" - ] - }, - { - "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": "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 - 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/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" + ] + }, + { + "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/quickstart", "gen/capabilities"] + }, + { + "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 2296ed3cf4ef762b91090863c1aea0681ab4d606 Mon Sep 17 00:00:00 2001 From: jayhack Date: Thu, 13 Mar 2025 21:00:52 -0700 Subject: [PATCH 2/4] . --- docs/gen/capabilities.mdx | 29 ++-------- docs/gen/common-commands.mdx | 98 ---------------------------------- docs/gen/faq.mdx | 18 +++++++ docs/gen/introduction.mdx | 34 ++++++++++-- docs/gen/quickstart.mdx | 57 -------------------- docs/introduction/overview.mdx | 63 ++++++++++++++-------- docs/mint.json | 2 +- 7 files changed, 95 insertions(+), 206 deletions(-) delete mode 100644 docs/gen/common-commands.mdx create mode 100644 docs/gen/faq.mdx delete mode 100644 docs/gen/quickstart.mdx diff --git a/docs/gen/capabilities.mdx b/docs/gen/capabilities.mdx index d0d7af827..f10de51d3 100644 --- a/docs/gen/capabilities.mdx +++ b/docs/gen/capabilities.mdx @@ -1,23 +1,14 @@ --- title: "Capabilities" +icon: "gear" --- -Codegen is powered by a suite of specialized tools that enable it to interact with your development environment and provide intelligent assistance. This page details the tools available to Codegen and how they enhance your workflow. +Codegen is built on an [open-source library](/introduction/overiew.mdx) for code manipulation. -## Core Agent - -At the heart of Codegen is a powerful AI code agent that can analyze, understand, and manipulate codebases. The agent combines large language model capabilities with specialized tools to provide intelligent code assistance. It can: - -- Analyze and understand complex codebases -- Make intelligent code edits and refactoring suggestions -- Handle code organization and dependency management -- Generate and update documentation -- Assist with debugging and problem-solving +It combines "tools" for code editing with powerful integrations, including Github, Linear and Slack. - Want to build your own code agent? Check out our [Build Code Agent - Tutorial](/docs/tutorials/build-code-agent) to learn how to create custom - agents using our open-source SDK! + Learn more about our open source [code agent implementation](/docs/tutorials/build-code-agent) ## Communication Tools @@ -64,18 +55,6 @@ For teams using Linear for project management, Codegen offers: - **LinearGetTeamsTool**: Retrieves information about teams in your Linear organization. -## Code Intelligence Tools - -In addition to platform-specific tools, Codegen includes powerful code intelligence capabilities: - -- **Code Analysis**: Understands and explains code structure and functionality. - -- **Debugging Assistance**: Helps identify and fix bugs in your code. - -- **Refactoring Suggestions**: Recommends improvements to code quality and structure. - -- **Documentation Generation**: Creates clear documentation for your code. - ## How Codegen Uses These Tools Codegen's AI brain (powered by Claude 3.7 Sonnet) intelligently selects and combines these tools to: diff --git a/docs/gen/common-commands.mdx b/docs/gen/common-commands.mdx deleted file mode 100644 index dc70fa028..000000000 --- a/docs/gen/common-commands.mdx +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: 'Common Commands' -description: 'Frequently used commands and examples for the AI development assistant' ---- - -# Common Commands - -This guide covers the most frequently used commands and interactions with our AI development assistant. All commands start with mentioning the bot (`@botname`). - -## GitHub-Related Commands - -### Pull Requests -```bash -# Create a new PR -@botname create PR for my current branch - -# List your PRs -@botname show my open PRs -@botname list PRs assigned to me - -# Review a PR -@botname review PR #123 -``` - -### Code Review -```bash -# Request a code review -@botname review my changes -@botname explain the changes in PR #123 - -# Get suggestions for improvement -@botname suggest improvements for PR #123 -``` - -## Linear Issue Management - -### Viewing Issues -```bash -# Show your assigned issues -@botname show my tasks -@botname list my Linear issues - -# View specific issue -@botname show issue LIN-123 -``` - -### Issue Creation and Updates -```bash -# Create new issue -@botname create Linear issue: Add user authentication - -# Update issue status -@botname move LIN-123 to In Progress -@botname update status of LIN-123 to Done -``` - -## Code Assistance - -### Code Questions -```bash -# Ask about code -@botname explain how this code works: [paste code] -@botname what does this function do? - -# Get code suggestions -@botname suggest a better way to write this -@botname how can I improve this code? -``` - -### Documentation -```bash -# Generate documentation -@botname document this function -@botname explain this code block -``` - -## General Help - -### Bot Information -```bash -# Get help -@botname help -@botname show available commands - -# Check status -@botname status -``` - -## Tips and Best Practices - -1. Be specific in your requests - include relevant details like PR numbers or issue IDs -2. For code-related questions, always provide context or paste the relevant code -3. Use thread replies for ongoing conversations about the same topic -4. When creating issues or PRs, provide clear descriptions and context - -## Advanced Usage - -For more advanced features and detailed commands, check out our [Expert Guide](/docs/cli/expert). You can also customize the bot's behavior and set up team-specific workflows through the configuration settings. \ No newline at end of file diff --git a/docs/gen/faq.mdx b/docs/gen/faq.mdx new file mode 100644 index 000000000..2a34b0435 --- /dev/null +++ b/docs/gen/faq.mdx @@ -0,0 +1,18 @@ +--- +title: "Frequently Asked Questions" +sidebarTitle: "FAQ" +icon: "square-question" +iconType: "solid" +--- + + + + Claude 3.7. Our code agent is roughly comparable with Claude Code. + + + Yes! For now. Get it while it's hot. + + + Codegen stores this data in their private cloud. We are SOC-2 compliant. [Learn more](/introduction/about) + + \ No newline at end of file diff --git a/docs/gen/introduction.mdx b/docs/gen/introduction.mdx index cb0ea95cc..27f50e4eb 100644 --- a/docs/gen/introduction.mdx +++ b/docs/gen/introduction.mdx @@ -1,15 +1,43 @@ --- -title: "codegen: generalist SWE agent" +title: "Codegen: AI Development Assistant" sidebarTitle: "Introduction" +icon: "lightbulb" --- +Codegen is an intelligent code agent powered that seamlessly integrates with Slack, Github and Linear. + + + + + + Explore our [Capabilities](/docs/gen/capabilities) page to learn more about + Codegen's full feature set and available tools! + -Codegen is an open-source AI development assistant, built on our powerful `CodeAgent` framework. It seamlessly integrates with your existing development tools - Slack for communication, GitHub for code management, and Linear for project tracking - to provide an intelligent coding companion right where you work. +# Installation -This guide will help you set up and configure our AI-powered development assistant with Slack, GitHub, and Linear integrations. Follow these steps to get started quickly. +[Log in with GitHub](https://codegen.sh/start) to install Codegen and set up integrations. Install codegen via OAuth with Github, Slack and Linear + +# Common Queries + +> *Edit repo X so that the user auth flow uses JWT* +Modify the authentication flow in a specified repository to use JSON Web Tokens. This ensures secure and stateless authentication. + +> *Show me the recent activity on my repo X* +Display the latest commits, pull requests, and other activities in a specified repository. This helps you stay updated with ongoing changes. + +> *Can you figure out why my tests are failing on `main`?* +Analyze the test failures on the main branch to identify potential issues. This assists in maintaining code quality and stability. + +> *Can you review my PR?* +Perform a code review on a specified pull request, providing feedback and suggestions. This ensures code quality and adherence to best practices. + +> *Do we have any tickets about Y?* +Search for tickets related to a specific topic or issue. This helps in tracking and managing tasks effectively. + diff --git a/docs/gen/quickstart.mdx b/docs/gen/quickstart.mdx deleted file mode 100644 index 7d2d7d55d..000000000 --- a/docs/gen/quickstart.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: 'Quickstart Guide' -description: 'Get started with our AI-powered development assistant' ---- - -# Quickstart Guide - - - - -This guide will help you set up and configure our AI-powered development assistant with Slack, GitHub, and Linear integrations. Follow these steps to get started quickly. - -## Step 1: Install Slack Bot - -Add to Slack - -1. Visit our Slack App Directory listing [coming soon] -2. Click "Add to Slack" -3. Select the workspace where you want to install the bot -4. Authorize the required permissions -5. Once installed, you'll see the bot in your workspace's apps - -The bot will now be available in your Slack workspace. You can interact with it by mentioning `@botname` in any channel where it's present. - -## Step 2: Configure GitHub Integration - -GitHub integration allows the bot to interact with your repositories, create PRs, and provide code-related assistance. - -1. Go to your Slack workspace settings -2. Navigate to the bot's configuration page -3. Click on "Connect GitHub" -4. Authorize the GitHub integration -5. Select the repositories you want the bot to have access to - -## Step 3: Set Up Linear Integration (Optional) - -Linear integration enables project management features and issue tracking capabilities. - -1. In your Slack workspace settings -2. Go to the bot's configuration page -3. Click on "Connect Linear" -4. Authorize the Linear integration -5. Choose the teams and projects you want to connect - -## Verification - -To verify everything is working: - -1. In Slack, type `@botname help` to see available commands -2. Try a simple GitHub command like `@botname list my PRs` -3. If you set up Linear, try `@botname show my tasks` - -## Next Steps - -- Check out our [Common Commands](/docs/common-commands) guide for everyday usage -- Explore advanced features in our [Expert Guide](/docs/cli/expert) -- Join our community for support and tips [coming soon] diff --git a/docs/introduction/overview.mdx b/docs/introduction/overview.mdx index 4d428fc71..53ad46cfc 100644 --- a/docs/introduction/overview.mdx +++ b/docs/introduction/overview.mdx @@ -5,7 +5,18 @@ icon: "code" iconType: "solid" --- -[Codegen](https://github.com/codegen-sh/codegen-sdk) is a python library for manipulating codebases. +[Codegen](https://github.com/codegen-sh/codegen-sdk) is an intelligent code agent powered by Claude 3.7 that seamlessly integrates with your development workflow. It combines advanced language model capabilities with deep platform integrations: + +- **GitHub Integration**: Pull request management, code reviews, and repository operations +- **Slack Integration**: Natural language interaction and team collaboration +- **Linear Integration**: Issue tracking and project management + + + Explore our [Capabilities](/docs/gen/capabilities) page to learn more about + Codegen's full feature set and available tools! + + +Under the hood, Codegen is built on a powerful 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/). @@ -27,20 +38,22 @@ for function in codebase.functions: codebase.commit() ``` - -Codegen handles complex refactors while maintaining correctness, enabling a broad set of advanced code manipulation programs. + 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). + + 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+). - +Codegen requires Python 3.12 - 3.13 (recommended: Python 3.13+). ### Using UV (Recommended) + ```bash uv tool install codegen --python 3.13 ``` @@ -48,7 +61,7 @@ uv tool install codegen --python 3.13 ### Using Pipx -Pipx is not officially supported by Codegen, but it should still work. + Pipx is not officially supported by Codegen, but it should still work. ```bash @@ -56,7 +69,8 @@ pipx install codegen ``` -For further & more in depth installation instructions, see the [installation guide](/introduction/installation). + For further & more in depth installation instructions, see the [installation + guide](/introduction/installation). ## What can I do with Codegen? @@ -69,14 +83,16 @@ Codegen's simple yet powerful APIs enable a range of applications, including: icon="robot" href="/tutorials/build-code-agent" > - Create an intelligent agent that can analyze and manipulate your codebase using natural language. + 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. + Generate interactive visualizations of your codebase's structure, + dependencies, and relationships. - + -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) + 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 diff --git a/docs/mint.json b/docs/mint.json index d1bcf3bc0..f33ded6f6 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -179,7 +179,7 @@ }, { "group": "codegen", - "pages": ["gen/introduction", "gen/quickstart", "gen/capabilities"] + "pages": ["gen/introduction", "gen/capabilities", "gen/faq"] }, { "group": "API Reference", From 7c64bc69d949dad273cac92f8cd9c434099d7530 Mon Sep 17 00:00:00 2001 From: Jay Hack Date: Sat, 15 Mar 2025 13:10:54 -0700 Subject: [PATCH 3/4] Discard changes to docs/introduction/overview.mdx --- docs/introduction/overview.mdx | 63 ++++++++++++---------------------- 1 file changed, 22 insertions(+), 41 deletions(-) diff --git a/docs/introduction/overview.mdx b/docs/introduction/overview.mdx index 53ad46cfc..4d428fc71 100644 --- a/docs/introduction/overview.mdx +++ b/docs/introduction/overview.mdx @@ -5,18 +5,7 @@ icon: "code" iconType: "solid" --- -[Codegen](https://github.com/codegen-sh/codegen-sdk) is an intelligent code agent powered by Claude 3.7 that seamlessly integrates with your development workflow. It combines advanced language model capabilities with deep platform integrations: - -- **GitHub Integration**: Pull request management, code reviews, and repository operations -- **Slack Integration**: Natural language interaction and team collaboration -- **Linear Integration**: Issue tracking and project management - - - Explore our [Capabilities](/docs/gen/capabilities) page to learn more about - Codegen's full feature set and available tools! - - -Under the hood, Codegen is built on a powerful python library for manipulating codebases. +[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/). @@ -38,22 +27,20 @@ for function in codebase.functions: codebase.commit() ``` + - Codegen handles complex refactors while maintaining correctness, enabling a - broad set of advanced code manipulation programs. +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). - +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+). + +Codegen requires Python 3.12 - 3.13 (recommended: Python 3.13+). + ### Using UV (Recommended) - ```bash uv tool install codegen --python 3.13 ``` @@ -61,7 +48,7 @@ uv tool install codegen --python 3.13 ### Using Pipx - Pipx is not officially supported by Codegen, but it should still work. +Pipx is not officially supported by Codegen, but it should still work. ```bash @@ -69,8 +56,7 @@ pipx install codegen ``` - For further & more in depth installation instructions, see the [installation - guide](/introduction/installation). +For further & more in depth installation instructions, see the [installation guide](/introduction/installation). ## What can I do with Codegen? @@ -83,16 +69,14 @@ Codegen's simple yet powerful APIs enable a range of applications, including: icon="robot" href="/tutorials/build-code-agent" > - Create an intelligent agent that can analyze and manipulate your codebase - using natural language. + 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. + Generate interactive visualizations of your codebase's structure, dependencies, and relationships. - + - 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) +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 From ecaeeefb7e9bab7cd95e78ef373e3e73123a4d2e Mon Sep 17 00:00:00 2001 From: jayhack <2548876+jayhack@users.noreply.github.com> Date: Sat, 15 Mar 2025 20:12:29 +0000 Subject: [PATCH 4/4] Automated pre-commit update --- docs/mint.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mint.json b/docs/mint.json index 4b21b9933..f33ded6f6 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -385,4 +385,4 @@ "x": "https://x.com/codegen", "linkedin": "https://linkedin.com/company/codegen-dot-com" } -} \ No newline at end of file +}