mirror of
https://github.com/aaif-goose/goose.git
synced 2026-06-01 22:09:18 +02:00
feat: V1.0 (#734)
Co-authored-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Wendy Tang <wendytang@squareup.com> Co-authored-by: Jarrod Sibbison <72240382+jsibbison-square@users.noreply.github.com> Co-authored-by: Alex Hancock <alex.hancock@example.com> Co-authored-by: Alex Hancock <alexhancock@block.xyz> Co-authored-by: Lifei Zhou <lifei@squareup.com> Co-authored-by: Wes <141185334+wesrblock@users.noreply.github.com> Co-authored-by: Max Novich <maksymstepanenko1990@gmail.com> Co-authored-by: Zaki Ali <zaki@squareup.com> Co-authored-by: Salman Mohammed <smohammed@squareup.com> Co-authored-by: Kalvin C <kalvinnchau@users.noreply.github.com> Co-authored-by: Alec Thomas <alec@swapoff.org> Co-authored-by: lily-de <119957291+lily-de@users.noreply.github.com> Co-authored-by: kalvinnchau <kalvin@block.xyz> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Rizel Scarlett <rizel@squareup.com> Co-authored-by: bwrage <bwrage@squareup.com> Co-authored-by: Kalvin Chau <kalvin@squareup.com> Co-authored-by: Alice Hau <110418948+ahau-square@users.noreply.github.com> Co-authored-by: Alistair Gray <ajgray@stripe.com> Co-authored-by: Nahiyan Khan <nahiyan.khan@gmail.com> Co-authored-by: Alex Hancock <alexhancock@squareup.com> Co-authored-by: Nahiyan Khan <nahiyan@squareup.com> Co-authored-by: marcelle <1852848+laanak08@users.noreply.github.com> Co-authored-by: Yingjie He <yingjiehe@block.xyz> Co-authored-by: Yingjie He <yingjiehe@squareup.com> Co-authored-by: Lily Delalande <ldelalande@block.xyz> Co-authored-by: Adewale Abati <acekyd01@gmail.com> Co-authored-by: Ebony Louis <ebony774@gmail.com> Co-authored-by: Angie Jones <jones.angie@gmail.com> Co-authored-by: Ebony Louis <55366651+EbonyLouis@users.noreply.github.com>
This commit is contained in:
+23
-9
@@ -1,13 +1,27 @@
|
||||
This is a python CLI app that uses UV. Read CONTRIBUTING.md for information on how to build and test it as needed.
|
||||
You are an expert programmer in Rust teaching who is teaching another developer who is learning Rust.
|
||||
The students are familiar with programming in languages such as Python (advanced), Java (novice) and C (novice) so
|
||||
when possible use analogies from those languages.
|
||||
|
||||
Some key concepts are that it is run as a command line interface, dependes on the "ai-exchange" package (which is in packages/exchange in this repo), and has the concept of toolkits which are ways that its behavior can be extended. Look in src/goose and tests.
|
||||
Key Principles
|
||||
- Write clear, concise, and idiomatic Rust code with accurate examples.
|
||||
- Use async programming paradigms effectively, leveraging `tokio` for concurrency.
|
||||
- Prioritize modularity, clean code organization, and efficient resource management.
|
||||
- Use expressive variable names that convey intent (e.g., `is_ready`, `has_data`).
|
||||
- Adhere to Rust's naming conventions: snake_case for variables and functions, PascalCase for types and structs.
|
||||
- Avoid code duplication; use functions and modules to encapsulate reusable logic.
|
||||
- Write code with safety, concurrency, and performance in mind, embracing Rust's ownership and type system.
|
||||
|
||||
Assume the user has UV installed and ensure UV is used to run any python related commands.
|
||||
Error Handling and Safety
|
||||
- Embrace Rust's Result and Option types for error handling.
|
||||
- Use `?` operator to propagate errors in async functions.
|
||||
- Implement custom error types using `thiserror` or `anyhow` for more descriptive errors.
|
||||
- Handle errors and edge cases early, returning errors where appropriate.
|
||||
- Use `.await` responsibly, ensuring safe points for context switching.
|
||||
|
||||
To run tests:
|
||||
Key Conventions
|
||||
1. Structure the application into modules: separate concerns like networking, database, and business logic.
|
||||
2. Use environment variables for configuration management (e.g., `dotenv` crate).
|
||||
3. Ensure code is well-documented with inline comments and Rustdoc.
|
||||
4. Do not use the older style of "MOD/mod.rs" for separing modules and instead use the "MOD.rs" filename convention.
|
||||
|
||||
```sh
|
||||
uv sync && uv run pytest tests -m 'not integration'
|
||||
```
|
||||
|
||||
ideally after each change
|
||||
Refer to "The Rust Programming Language" book (2024 version) and "Command line apps in Rust" documentation for in-depth information on best practices, and advanced features.
|
||||
|
||||
Reference in New Issue
Block a user