kward 0.67.0 → 0.67.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +2 -2
- data/lib/kward/rpc/server.rb +1 -1
- data/lib/kward/rpc/session_manager.rb +2 -2
- data/lib/kward/session_store.rb +11 -7
- data/lib/kward/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d03a2b137c3ef3a1bc27e44b2629de49a41c70c3044088f9bd0c162cf50e3387
|
|
4
|
+
data.tar.gz: 241753e7eca9acb6ff94cae50afa7ea43ea2e4c13a8d22eb5031d399ae7fad5a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ac0d8465faa573ac9878c4bf5b83327145a7810cbe375b64ce8019531ba00ea3be779a82ed912825de2372ba18917dc56137f67f60161d3234e396b6ec82f3a2
|
|
7
|
+
data.tar.gz: 3e50a23badb84faf825a75cec5f9d0f4b62cc2bb0c76d643ac8bfb41d99a97c0cbc95268508e4b8a0c2e172249d105f3246b8b0e6a44c81725eae52db71235e6
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@ All notable changes to Kward will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.67.1] - 2026-06-14
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Fixed RPC session listing so it no longer deletes the active empty session file while UI clients are starting a first turn.
|
|
12
|
+
|
|
7
13
|
## [0.67.0] - 2026-06-13
|
|
8
14
|
|
|
9
15
|
### Added
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
kward (0.67.
|
|
4
|
+
kward (0.67.1)
|
|
5
5
|
base64
|
|
6
6
|
nokogiri
|
|
7
7
|
tiktoken_ruby
|
|
@@ -66,7 +66,7 @@ CHECKSUMS
|
|
|
66
66
|
date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
|
|
67
67
|
drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
|
|
68
68
|
erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9
|
|
69
|
-
kward (0.67.
|
|
69
|
+
kward (0.67.1)
|
|
70
70
|
minitest (6.0.6) sha256=153ea36d1d987a62942382b61075745042a2b3123b1cd48f4c3675af9cc7d6f1
|
|
71
71
|
nokogiri (1.19.3-arm64-darwin) sha256=71b9bd424b1b7abc18b05052a1a3cfd3627abdca62be280854cc411791357e42
|
|
72
72
|
pastel (0.8.0) sha256=481da9fb7d2f6e6b1a08faf11fa10363172dc40fd47848f096ae21209f805a75
|
data/lib/kward/rpc/server.rb
CHANGED
|
@@ -218,7 +218,7 @@ module Kward
|
|
|
218
218
|
when "sessions/resume"
|
|
219
219
|
@session_manager.resume_session(path: params.fetch("path"), workspace_root: params["workspaceRoot"])
|
|
220
220
|
when "sessions/list"
|
|
221
|
-
{ sessions: @session_manager.list_sessions(workspace_root: params["workspaceRoot"] || Dir.pwd, limit: params["limit"]) }
|
|
221
|
+
{ sessions: @session_manager.list_sessions(workspace_root: params["workspaceRoot"] || Dir.pwd, limit: params["limit"], current_session_path: params["currentSessionPath"]) }
|
|
222
222
|
when "sessions/rename"
|
|
223
223
|
@session_manager.rename_session(session_id: params.fetch("sessionId"), name: params["name"])
|
|
224
224
|
when "sessions/clone"
|
|
@@ -93,12 +93,12 @@ module Kward
|
|
|
93
93
|
payload
|
|
94
94
|
end
|
|
95
95
|
|
|
96
|
-
def list_sessions(workspace_root: Dir.pwd, limit: nil)
|
|
96
|
+
def list_sessions(workspace_root: Dir.pwd, limit: nil, current_session_path: nil)
|
|
97
97
|
root = validate_workspace_root(workspace_root)
|
|
98
98
|
store = SessionStore.new(config_dir: @config_dir, cwd: root)
|
|
99
99
|
requested_limit = limit.to_i if limit
|
|
100
100
|
requested_limit = nil unless requested_limit&.positive?
|
|
101
|
-
store.recent(limit: requested_limit)
|
|
101
|
+
store.recent(limit: requested_limit, keep_empty_path: current_session_path)
|
|
102
102
|
.map { |info| session_info_payload(info, workspace_root: root) }
|
|
103
103
|
end
|
|
104
104
|
|
data/lib/kward/session_store.rb
CHANGED
|
@@ -215,8 +215,9 @@ module Kward
|
|
|
215
215
|
[session, conversation]
|
|
216
216
|
end
|
|
217
217
|
|
|
218
|
-
def recent(limit: 20)
|
|
219
|
-
|
|
218
|
+
def recent(limit: 20, keep_empty_path: nil)
|
|
219
|
+
sessions = recent_sessions(keep_empty_path: keep_empty_path)
|
|
220
|
+
limit ? sessions.first(limit) : sessions
|
|
220
221
|
end
|
|
221
222
|
|
|
222
223
|
def remember_last_session(session)
|
|
@@ -241,8 +242,9 @@ module Kward
|
|
|
241
242
|
nil
|
|
242
243
|
end
|
|
243
244
|
|
|
244
|
-
def recent_tree(limit: 20)
|
|
245
|
-
sessions =
|
|
245
|
+
def recent_tree(limit: 20, keep_empty_path: nil)
|
|
246
|
+
sessions = recent_sessions(keep_empty_path: keep_empty_path)
|
|
247
|
+
sessions = sessions.first(limit) if limit
|
|
246
248
|
decorate_tree(sessions)
|
|
247
249
|
end
|
|
248
250
|
|
|
@@ -574,18 +576,20 @@ module Kward
|
|
|
574
576
|
nil
|
|
575
577
|
end
|
|
576
578
|
|
|
577
|
-
def recent_sessions
|
|
579
|
+
def recent_sessions(keep_empty_path: nil)
|
|
580
|
+
keep_empty_path = File.expand_path(keep_empty_path) unless keep_empty_path.to_s.empty?
|
|
578
581
|
Dir.glob(File.join(session_dir, "*.jsonl")).filter_map do |path|
|
|
579
582
|
info = session_info(path)
|
|
580
583
|
next unless info
|
|
581
|
-
next if delete_empty_unnamed_session_info(info)
|
|
584
|
+
next if delete_empty_unnamed_session_info(info, keep_empty_path: keep_empty_path)
|
|
582
585
|
|
|
583
586
|
info
|
|
584
587
|
end.sort_by { |info| info.modified_at || Time.at(0) }.reverse
|
|
585
588
|
end
|
|
586
589
|
|
|
587
|
-
def delete_empty_unnamed_session_info(info)
|
|
590
|
+
def delete_empty_unnamed_session_info(info, keep_empty_path: nil)
|
|
588
591
|
return false unless info.name.to_s.strip.empty? && info.message_count.to_i.zero?
|
|
592
|
+
return true if keep_empty_path && File.expand_path(info.path) == keep_empty_path
|
|
589
593
|
|
|
590
594
|
File.delete(info.path)
|
|
591
595
|
true
|
data/lib/kward/version.rb
CHANGED