chore(release): release 0.9.3 (#97)

This commit is contained in:
Bradley Axen
2024-09-25 19:44:34 -07:00
committed by GitHub
parent 6065125ba7
commit 676ac7824d
3 changed files with 34 additions and 11 deletions
+26
View File
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.9.3] - 2024-09-25
- feat: auto save sessions before next user input (#94)
- fix: removed the diff when default profile changes (#92)
- feat: add shell-completions subcommand (#76)
- chore: update readme! (#96)
- chore: update docs again (#77)
- fix: remove overly general match for long running commands (#87)
- fix: default ollama to tested model (#88)
- fix: Resize file in screen toolkit (#81)
- fix: enhance shell() to know when it is interactive (#66)
- docs: document how to run goose fully from source from any dir (#83)
- feat: track cost and token usage in log file (#80)
- chore: add link to docs in read me (#85)
- docs: add in ollama (#82)
- chore: add just command for releasing goose (#55)
- feat: support markdown plans (#79)
- feat: add version options (#74)
- docs: fixing exchange url to public version (#67)
- docs: Update CONTRIBUTING.md (#69)
- chore: create mkdocs for goose (#70)
- docs: fix broken link (#71)
- feat: give commands the ability to execute logic (#63)
- feat: jira toolkit (#59)
- feat: run goose in a docker-style sandbox (#44)
## [0.9.0] - 2024-09-10 ## [0.9.0] - 2024-09-10
This also updates the minimum version of exchange to 0.9.0. This also updates the minimum version of exchange to 0.9.0.
+2 -2
View File
@@ -1,14 +1,14 @@
[project] [project]
name = "goose-ai" name = "goose-ai"
description = "a programming agent that runs on your machine" description = "a programming agent that runs on your machine"
version = "0.9.0" version = "0.9.3"
readme = "README.md" readme = "README.md"
requires-python = ">=3.10" requires-python = ">=3.10"
dependencies = [ dependencies = [
"attrs>=23.2.0", "attrs>=23.2.0",
"rich>=13.7.1", "rich>=13.7.1",
"ruamel-yaml>=0.18.6", "ruamel-yaml>=0.18.6",
"ai-exchange>=0.9.2", "ai-exchange>=0.9.3",
"click>=8.1.7", "click>=8.1.7",
"prompt-toolkit>=3.0.47", "prompt-toolkit>=3.0.47",
] ]
+6 -9
View File
@@ -45,8 +45,7 @@ def load_provider() -> str:
def load_profile(name: Optional[str]) -> Profile: def load_profile(name: Optional[str]) -> Profile:
(profile_name, profile) = ensure_config(name) _, profile = ensure_config(name)
print(Panel(f"[green]Using profile[/]: {profile_name}, {{{profile.profile_info()}}}"))
return profile return profile
@@ -85,9 +84,9 @@ class Session:
) -> None: ) -> None:
if name is None: if name is None:
self.name = droid() self.name = droid()
print(Panel(f"Session name not provided, using generated name: {self.name}"))
else: else:
self.name = name self.name = name
self.profile = profile
self.status_indicator = Status("", spinner="dots") self.status_indicator = Status("", spinner="dots")
self.notifier = SessionNotifier(self.status_indicator) self.notifier = SessionNotifier(self.status_indicator)
@@ -146,6 +145,9 @@ class Session:
Runs the main loop to handle user inputs and responses. Runs the main loop to handle user inputs and responses.
Continues until an empty string is returned from the prompt. Continues until an empty string is returned from the prompt.
""" """
print(f"[dim]starting session | name:[cyan]{self.name}[/] profile:[cyan]{self.profile or 'default'}[/]")
print(f"[dim]saving to {self.session_file_path}")
print()
message = self.process_first_message() message = self.process_first_message()
while message: # Loop until no input (empty string). while message: # Loop until no input (empty string).
self.notifier.start() self.notifier.start()
@@ -231,16 +233,11 @@ class Session:
return session_path(self.name) return session_path(self.name)
def load_session(self) -> List[Message]: def load_session(self) -> List[Message]:
message = (
f"session is going to be saved to [bold cyan]{self.session_file_path}[/bold cyan]."
+ " You can view it anytime."
)
print(Panel(message))
return read_or_create_file(self.session_file_path) return read_or_create_file(self.session_file_path)
def _log_cost(self) -> None: def _log_cost(self) -> None:
get_logger().info(get_total_cost_message(self.exchange.get_token_usage())) get_logger().info(get_total_cost_message(self.exchange.get_token_usage()))
print("You can view the cost and token usage in the log directory", LOG_PATH) print(f"[dim]you can view the cost and token usage in the log directory {LOG_PATH}")
if __name__ == "__main__": if __name__ == "__main__":