Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PSAI.psd1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@{
RootModule = 'PSAI.psm1'
ModuleVersion = '0.5.1'
ModuleVersion = '0.5.2'
GUID = '68662d19-a8f1-484f-b1b7-3bf0e8a436df'
Author = 'Douglas Finke'
CompanyName = 'Doug Finke'
Expand Down
41 changes: 38 additions & 3 deletions Public/New-Agent.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,44 @@ $InteractiveCLI = {
break
}
elseif ($message.StartsWith("/")) {
switch ($message.ToLower()) {
"/clear" { Clear-Host }
default { Write-Host "Unknown command: $message" }
if ($message -eq "/clear") {
Clear-Host
}
elseif ($message -like "/rewind*") {
$parts = $message -split '\s+'
$n = if ($parts.Count -gt 1 -and $parts[1] -match '^\d+$') { [int]$parts[1] } else { 1 }
if ($n -le 0) {
Write-Host "Invalid number of messages to rewind."
continue
}
$userIndices = @()
for ($i = 0; $i -lt $script:messages.Count; $i++) {
if ($script:messages[$i].role -eq 'user') {
$userIndices += $i
}
}
if ($userIndices.Count -eq 0) {
Write-Host "No user messages to rewind."
continue
}
$n = [math]::Min($n, $userIndices.Count)
$targetIndex = if ($n -eq $userIndices.Count) { $userIndices[0] } else { $userIndices[$userIndices.Count - $n] }
$script:messages = $script:messages[0..($targetIndex - 1)]
Write-Host "Rewound $n message(s)."
}
elseif ($message -eq "/listmsgs") {
$userMessages = @($script:messages | Where-Object { $_.role -eq 'user' })
if ($userMessages.Count -gt 0) {
for ($i = 0; $i -lt $userMessages.Count; $i++) {
Write-Host "$($i+1). $($userMessages[$i].content)"
}
}
else {
Write-Host "No user messages found."
}
}
else {
Write-Host "Unknown command: $message"
}
}
else {
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,8 @@ PSAI Agents now support slash commands in interactive sessions, allowing you to
### Available Commands

- **`/clear`**: Clears the console screen, providing a clean slate for your interaction.
- **`/rewind [n]`**: Rewinds the conversation to before the last n user messages, deleting the last n user inputs and all subsequent messages. If n is not specified, defaults to 1.
- **`/listmsgs`**: Lists all user messages in the current conversation.

### Usage

Expand Down
6 changes: 6 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## v0.5.2

- Added `/rewind` slash command to InteractiveCLI for rewinding the conversation to before the last user message
- Fixed `/listmsgs` slash command to correctly display user messages after using `/rewind`
- Enhanced `/rewind` slash command to accept an optional number of messages to rewind (e.g., `/rewind 3` rewinds the last 3 user messages)

## v0.5.1

- Added slash command support to InteractiveCLI
Expand Down
1 change: 1 addition & 0 deletions spikes/PSToolboxAI
Submodule PSToolboxAI added at c7758a
Loading