chore(release): release 0.9.3 (#97)
This commit is contained in:
@@ -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
@@ -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",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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__":
|
||||||
|
|||||||
Reference in New Issue
Block a user