Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AutoDevInput Text improvement #101

Closed
phodal opened this issue Mar 8, 2024 · 2 comments
Closed

AutoDevInput Text improvement #101

phodal opened this issue Mar 8, 2024 · 2 comments
Assignees

Comments

@phodal
Copy link
Member

phodal commented Mar 8, 2024

In current design, AutoDev input will be complex:

For example:

图片

Which will make input box complex, in order to use SyntaxHighlighterBase, CompletionContributor or other features, we can design it as a language, which is same to JetBrains' design.

@phodal
Copy link
Member Author

phodal commented Mar 8, 2024

REFS: https://youtrack.jetbrains.com/issue/LLM-2223

Current situation
Only plaintext and code fences are supported.

Desired situation
Settle on a syntax for references. The first syntaxes that come to my mind are:

  • `Foo`
  • [Foo]
  • @foo
  • #Foo

phodal added a commit that referenced this issue Mar 8, 2024
The commit introduces changes to the cursor handling logic in the chat input sections, ensuring that the cursor is automatically moved to the start of the input field when a new message is loaded or when the user manually triggers the action. This enhancement improves the user experience by making it easier for users to quickly start typing their responses without having to manually position the cursor.
phodal added a commit that referenced this issue Mar 11, 2024
…e support #101

AutoDev input language support is a new feature added to the project. The following files have been modified or created to support this new language:
phodal added a commit that referenced this issue Mar 11, 2024
…ies #101

This commit renames the 'autoin-lang' project to 'devin-lang' to reflect a change in the project's name. It also updates the settings.gradle.kts file to reflect the new project name and adds a dependency on the 'devin-lang' project in the build.gradle.kts file. Additionally, the .gitignore and source files for the 'autoin-lang' project have been renamed to match the new 'devin-lang' project name.
phodal added a commit that referenced this issue Mar 11, 2024
The DevInLexer and DevInParser have been updated to support variables, agent usage, and commands in DevInLang. This change introduces a more flexible grammar that recognizes strings and variables, allowing for more complex and expressive scripting within the language.
phodal added a commit that referenced this issue Mar 11, 2024
…he DevInLanguage #101

The commit introduces a new lexer and parser for the DevInLanguage, based on Flex and BNF grammars. The lexer is implemented using a FlexAdapter, which wraps the generated _DevInLexer class. The parser is defined in a BNF file and is converted to a PsiParser using a ParserDefinition class.
phodal added a commit that referenced this issue Mar 11, 2024
…o support more complex identifiers and whitespace handling #101

The commit addresses issues with the DevInParser and DevInLexer in the ext/devin-lang package. It introduces more flexible regex patterns for identifiers, allowing characters other than the initial '$', '@', or '/'. Additionally, the commit refactors the lexer to handle whitespace more efficiently, using a dedicated WHITE_SPACE token type. The parser definition is updated to leverage the new token types, and the build script is modified to reflect the changes in the generated parser and lexer classes. Finally, a test file is updated to demonstrate the new parsing capabilities.
phodal added a commit that referenced this issue Mar 11, 2024
…ion #101

The icon used for the DevInFileType was updated to use a custom icon instead of the AI Copilot icon. Additionally, a new file was added to declare the icon in a separate file, and the missing package declaration in DevInLexerAdapter was fixed. The build.gradle.kts file was modified to remove the unnecessary plugin and plugin version settings, as well as the dependency on the :java project, since these were not needed for this change.
phodal added a commit that referenced this issue Mar 11, 2024
The default icon for the DevInIcons object has been updated from ai-copilot.svg to devin.svg, reflecting the project's branding.
phodal added a commit that referenced this issue Mar 11, 2024
…er. #101

The commit introduces a new file `DevInAstFactory.kt` that extends `ASTFactory`, providing a custom factory for the DevIn language. This class is responsible for creating Abstract Syntax Trees (ASTs) for the DevIn language.

Another new file `DevInTypedHandler.kt` is added, which extends `TypedHandlerDelegate`. This class handles keyboard input within the DevIn language file, providing support for auto-completion and other editor actions.

The `cc.unitmesh.language.xml` file is modified to register the newly created `DevInAstFactory` and `DevInTypedHandler` with the IntelliJ platform. This ensures that the custom functionality is integrated into the IDE's features for the DevIn language.
phodal added a commit that referenced this issue Mar 11, 2024
…d TypedHandler from plugin.xml #101

The `DevInCompletionContributor` class has been added to provide code completion functionality for the DevIn language. This includes the `VariableProvider` class to suggest variables during code completion. Additionally, the deprecated `TypedHandler` has been commented out and a new `completion.contributor` extension has been added to the plugin descriptor (`cc.unitmesh.language.xml`) to register the new completion contributor.
phodal added a commit that referenced this issue Mar 11, 2024
phodal added a commit that referenced this issue Mar 11, 2024
…and completion. #101

The commit introduces several changes to add support for the DevIn programming language in an IntelliJ IDEA plugin. The `DevInFile` class is modified to use the correct `DevInFileType` instance. A new `CustomVariable` enum is added to provide static variables for completion.
phodal added a commit that referenced this issue Mar 11, 2024
… parser #101

This commit introduces stub support for the DevInLanguage by creating a new `DevInFileStub` class and its corresponding `Type`, which extends `IStubFileElementType`. The `DevInFile` class has been updated to use the `getOriginalFile` method and to override `toString` and `getStub` methods. The `DevInSyntaxHighlighter` and `DevInCompletionContributor` have been refactored to use the new `DevInTypes.REF_BLOCK` token type in their respective extensions. The `DevInLexer` has been modified to recognize references with the `@` and `$` prefixes, and the `DevInFileType` has been updated to use the extension `.devin` instead of `.autoin`.
phodal added a commit that referenced this issue Mar 11, 2024
…101

The commit introduces a new lexical and syntactic model for the DevInLanguage, including the support for agent commands and variables. The changes include the addition of new token types, grammar rules, and completion logic, as well as the modification of the lexer and syntax highlighting to accommodate these new features.
phodal added a commit that referenced this issue Mar 11, 2024
…#101

This commit introduces a new token type 'IDENTIFIER' and corresponding changes across the DevInLanguage extension, including the grammar, lexer, and completion contributor. The 'IDENTIFIER' token is now recognized in the lexer and used in the parser to represent variable identifiers. The completion provider has been updated to trigger on 'VARIABLE_ID' tokens, allowing for auto-completion of variable names. Additionally, the lexer now supports a 'VARIABLE_BLOCK' state to handle variable definitions. These changes enhance the language support for variable management within DevInLanguage.
phodal added a commit that referenced this issue Mar 11, 2024
This commit introduces a new class, `DevInReferenceFoldingBuilder`, which provides support for code folding in the DevIn language. The builder allows users to collapse regions of code marked by variable IDs, improving readability and manageability of large codebases. Additionally, the related entry in `cc.unitmesh.language.xml` has been modified to register the folding builder for the DevIn language, ensuring that the code folding functionality is properly integrated into the development environment.
phodal added a commit that referenced this issue Mar 11, 2024
phodal added a commit that referenced this issue Mar 12, 2024
…pletion provider implementation. #101

This commit introduces support for the Markdown plugin by including it as a dependency in the plugin configuration. Additionally, it lays the foundation for a completion provider by implementing the `CodeLanguageProvider` class, which is a crucial component for providing context-aware code completion suggestions within the IDE. The completion provider is currently a work in progress, with the `TODO` comment indicating that further development is required to implement the actual completion logic.
phodal added a commit that referenced this issue Mar 12, 2024
…101

The completion provider now uses the `MyInsertHandler` to insert a newline and move the caret
after inserting a variable identifier, providing a better user experience for code completion
within DevInTypes.VARIABLE_ID. Additionally, the completion provider now iterates over all
injectable languages and adds them as lookup elements, each with its type text and an insert
handler, improving the overall functionality of the completion feature.
phodal added a commit that referenced this issue Mar 12, 2024
phodal added a commit that referenced this issue Mar 12, 2024
phodal added a commit that referenced this issue Mar 12, 2024
…cture #101

The commit reorganizes the packages and resources for the Devin language extension to improve the structure and clarity of the codebase. The following changes were made:

- Rename and modify files to reflect their focus on syntax highlighting and lexing.
- Move files into new subpackages within the `cc.unitmesh.language.highlight` and `cc.unitmesh.language.lexer` packages.
- Modify the `build.gradle.kts` file to update the target output directory for the lexer generator.
- Rename and modify the `DevInParserDefinition` to include the new package structure.
- Rename the `DevInSyntaxHighlighterFactory` to reflect its new location in the `cc.unitmesh.language.highlight` package.
- Modify the `DevInParsingTest` to use the updated `DevInParserDefinition`.

These changes help ensure that the Devin language extension is more maintainable and easier to understand for future development and maintenance.
phodal added a commit that referenced this issue Mar 12, 2024
This commit introduces a new class `CodeBlockElement` to the DevInLanguage parser, providing a wrapper for code block elements within text. The class is designed to handle injection host functionality, including updating text and creating literal text escapers. This addition will improve the parsing capabilities of the DevInLanguage plugin, allowing for more accurate and comprehensive processing of code blocks within user input.
phodal added a commit that referenced this issue Mar 12, 2024
…anguage injection for code blocks in DevIn language. #101
phodal added a commit that referenced this issue Mar 12, 2024
phodal added a commit that referenced this issue Mar 19, 2024
Refactor the implementation of the `regex` file function in order to improve code readability and maintainability. The logic of iterating over project files and matching them with the given regex pattern is extracted into a separate helper function `regexFunction()`. This results in cleaner and more modular code.
phodal added a commit that referenced this issue Mar 19, 2024
Refactor FileFunctionProvider to use separate file for FileFunc enum and add parseRegex function. Updates FileFuncInsCommand to use the new FileFunc enum.

The FileFunctionProvider was refactored to use a separate file for the FileFunc enum, and a parseRegex function was added. The FileFuncInsCommand was also updated to use the new FileFunc enum.
phodal added a commit that referenced this issue Mar 19, 2024
…d colon-separated parameters #101

The commit introduces a new feature to the DevInParser and DevInLexer, enabling the parsing and lexing of system calling commands with identifiers and colon-separated parameters. This enhancement allows for more complex and expressive system interactions within the DevInLanguage.
phodal added a commit that referenced this issue Mar 19, 2024
…nd identifiers #101

The variable, agent, and command identifier tokens were previously highlighted using the number color, which is not appropriate for identifiers. This commit corrects the highlighting for these tokens by assigning them the constant color, which is more suitable for identifiers. Additionally, the command property tokens are now highlighted with the string color, and system tokens are also highlighted with appropriate colors.
phodal added a commit that referenced this issue Mar 19, 2024
The `DevInSyntaxHighlighterFactory` now returns the `DevInSyntaxHighlighter` directly, removing unnecessary parameters and improving code readability.
phodal added a commit that referenced this issue Mar 19, 2024
Previously, the language injection check was prone to unnecessary re-evaluation due to the use of `||` and `&&`. This commit refactors the code to use `?:` and `?: return` to ensure that the check is performed only once and the function returns as soon as the condition is met, improving the efficiency and readability of the code.
phodal added a commit that referenced this issue Mar 19, 2024
phodal added a commit that referenced this issue Mar 19, 2024
… whitespace in agent ID regex #101

The `DevInTokenType` class now correctly formats its string representation, and the `DevInLexer.flex` file has been updated to allow whitespace in agent IDs. Additionally, unnecessary code has been removed from the `DevInTypedHandler.kt` and `DevInFile.kt` files.
phodal added a commit that referenced this issue Mar 19, 2024
…nt completion

#101

The commit adds a new documentation provider for the DevIn language, which improves the user experience by providing quick navigation information for PsiElements. Additionally, the commit refactors the CustomAgentCompletion class to use the new documentation provider and fixes an issue with the import statements. The changes also include modifications to the plugin.xml file to register the documentation provider and a refactoring of the loadAgentConfigs function to use the new documentation provider.
phodal added a commit that referenced this issue Mar 19, 2024
The regex pattern for agent_id in DevInLexer.flex has been updated to only allow non-whitespace characters, ensuring that agent IDs are syntactically valid and do not include spaces or tabs. This change aligns with the language specification and improves the parsing and validation of agent IDs in the DevInLang grammar.

Additionally, the DevInsDocumentationProvider class has been refactored to extend AbstractDocumentationProvider instead of DocumentationProvider directly, and it now handles documentation lookup for AGENT_ID and COMMAND_ID elements. The class now imports the necessary packages for interacting with agent configurations and built-in commands, and it provides a more detailed documentation string for each element type. This refactoring enhances the documentation capabilities of the language plugin and improves the developer experience.
phodal added a commit that referenced this issue Mar 19, 2024
…entation provider #101

The documentation provider now supports custom variables, enhancing the documentation experience for users.
phodal added a commit that referenced this issue Mar 20, 2024
This commit introduces a new LocalInspectionTool for the DevIns language, which detects and reports duplicate agent declarations. The inspection is implemented in `DevInsDuplicateAgentInspection` and is registered in the `.xml` file under the `localInspection` tag.
phodal added a commit that referenced this issue Mar 20, 2024
The error message for duplicate agent calls has been enhanced to provide more context and a clear recommendation to the user. Previously, it only indicated "Duplicate agent calling", which was not very descriptive. Now, the message includes a suggestion to remove the duplicate calls and emphasizes the importance of making only one call per agent.
phodal added a commit that referenced this issue Mar 20, 2024
…ate agent calls in DevInLanguage #101

The new feature introduces a linting inspection that detects when a method call to an agent is made more than once in a single file. This can lead to unintended behavior and is generally considered a code smell. The inspection provides a quick fix to remove the duplicate calls, encouraging developers to write more maintainable and efficient code. The messages displayed by the inspection are now localized, making the user experience more consistent and easier to understand across different projects and languages.
phodal added a commit that referenced this issue Mar 20, 2024
This commit introduces a new inspection for the DevIns language plugin, which detects and reports cases of multiple calls to the same agent. The inspection helps maintain the integrity of agent-based code by ensuring that each agent is called only once, preventing potential issues and confusion. The commit also includes a new HTML file with the inspection description and modifies the `DevInBundle.Properties` file to add a message for the inspection group and the corresponding message for the duplicate agent inspection. Finally, the `DevInsDuplicateAgentInspection.kt` file is modified to use the new inspection group message and to implement the inspection logic.
phodal added a commit that referenced this issue Mar 20, 2024
…ame #101

The DevInBundle class has been refactored to use non-NLS strings for improved performance and to correct the bundle name for proper message loading. The `BUNDLE` constant has been renamed to `DevInBUNDLE` to match the file name of the resource bundle. Additionally, the `message` and `messagePointer` methods have been updated to use the correct bundle name and to suppress any warnings from the spread operator. These changes ensure that the internationalization logic is more robust and easier to maintain.
phodal added a commit that referenced this issue Mar 20, 2024
…DevInBundle #101

This commit updates the `DevInBundle` in place of the `AutoDevBundle` in various classes and files within the `devins-lang` extension, ensuring consistent use of the new bundle for all DevIn-related messages and UI elements.
phodal added a commit that referenced this issue Mar 20, 2024
…nsDuplicateAgentInspection #101

The DevInsDuplicateAgentInspection now uses a set of `DevInUsed` objects instead of strings to more accurately detect and report duplicate agent IDs. This change ensures that the inspection correctly identifies and flags only unique agent IDs within the context of their usage, improving the precision and reliability of the linting process.
phodal added a commit that referenced this issue Mar 20, 2024
… old implementation #101

This commit introduces a new class `SymbolInsCommand` in the `devins-lang` extension, which provides functionality for symbol insertion. The old implementation has been removed to avoid code duplication and maintain a clean codebase. The new class is designed to handle symbol resolution and insertion more efficiently, improving the overall user experience.
phodal added a commit that referenced this issue Mar 20, 2024
…#101

Ensure the readability and maintainability of the code by updating the condition to check if the command node is in a list of predefined commands. This change simplifies the code and makes it more consistent.
phodal added a commit that referenced this issue Mar 20, 2024
…#101

Add CustomAgentConfig attribute to CompileResult for working agent information.
Update loadAgentConfigs to loadFromProject method.
phodal added a commit that referenced this issue Mar 20, 2024
…ilation #101

Add support for using VariableTemplateCompiler to compile variables. The compiler is now utilized to parse and compile variables, generating output based on the compilation.
phodal added a commit that referenced this issue Mar 20, 2024
Add a new method `fromString` to create a `DevInFile` from a given text in DevIn language. This method creates a new file with a unique filename using UUID, and then returns the created `DevInFile`. This method improves the flexibility and reusability of creating `DevInFile` instances.
phodal added a commit that referenced this issue Mar 20, 2024
Add support for executing custom agents for language compilation, improving interaction with the console.
@phodal phodal closed this as completed Mar 20, 2024
@phodal
Copy link
Member Author

phodal commented Mar 20, 2024

详细见:https://ide.unitmesh.cc/devins

phodal added a commit that referenced this issue Mar 20, 2024
Add a new SHELL command to the DevIns language, along with
supporting functionality such as command execution and
completion provider for code insight.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

1 participant