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

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/),
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
This also updates the minimum version of exchange to 0.9.0.

View File

@@ -1,14 +1,14 @@
[project]
name = "goose-ai"
description = "a programming agent that runs on your machine"
version = "0.9.0"
version = "0.9.3"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"attrs>=23.2.0",
"rich>=13.7.1",
"ruamel-yaml>=0.18.6",
"ai-exchange>=0.9.2",
"ai-exchange>=0.9.3",
"click>=8.1.7",
"prompt-toolkit>=3.0.47",
]

View File

@@ -45,8 +45,7 @@ def load_provider() -> str:
def load_profile(name: Optional[str]) -> Profile:
(profile_name, profile) = ensure_config(name)
print(Panel(f"[green]Using profile[/]: {profile_name}, {{{profile.profile_info()}}}"))
_, profile = ensure_config(name)
return profile
@@ -85,9 +84,9 @@ class Session:
) -> None:
if name is None:
self.name = droid()
print(Panel(f"Session name not provided, using generated name: {self.name}"))
else:
self.name = name
self.profile = profile
self.status_indicator = Status("", spinner="dots")
self.notifier = SessionNotifier(self.status_indicator)
@@ -146,6 +145,9 @@ class Session:
Runs the main loop to handle user inputs and responses.
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()
while message: # Loop until no input (empty string).
self.notifier.start()
@@ -231,16 +233,11 @@ class Session:
return session_path(self.name)
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)
def _log_cost(self) -> None:
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__":