appydave-tools 0.70.0 → 0.71.0

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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/commands/brainstorming-agent.md +227 -0
  3. data/.claude/commands/cli-test.md +251 -0
  4. data/.claude/commands/dev.md +234 -0
  5. data/.claude/commands/po.md +227 -0
  6. data/.claude/commands/progress.md +51 -0
  7. data/.claude/commands/uat.md +321 -0
  8. data/.rubocop.yml +9 -0
  9. data/AGENTS.md +43 -0
  10. data/CHANGELOG.md +12 -0
  11. data/CLAUDE.md +26 -3
  12. data/README.md +15 -0
  13. data/bin/dam +21 -1
  14. data/bin/jump.rb +29 -0
  15. data/bin/subtitle_processor.rb +54 -1
  16. data/bin/zsh_history.rb +846 -0
  17. data/docs/README.md +162 -69
  18. data/docs/architecture/cli/exe-bin-convention.md +434 -0
  19. data/docs/architecture/cli-patterns.md +631 -0
  20. data/docs/architecture/gpt-context/gpt-context-architecture.md +325 -0
  21. data/docs/architecture/gpt-context/gpt-context-implementation-guide.md +419 -0
  22. data/docs/architecture/gpt-context/gpt-context-vision.md +179 -0
  23. data/docs/architecture/testing/testing-patterns.md +762 -0
  24. data/docs/backlog.md +120 -0
  25. data/docs/cli-tests/FR-3-jump-location-tool.md +515 -0
  26. data/docs/specs/fr-002-gpt-context-help-system.md +265 -0
  27. data/docs/specs/fr-003-jump-location-tool.md +779 -0
  28. data/docs/specs/zsh-history-tool.md +820 -0
  29. data/docs/uat/FR-3-jump-location-tool.md +741 -0
  30. data/exe/jump +11 -0
  31. data/exe/{subtitle_manager → subtitle_processor} +1 -1
  32. data/exe/zsh_history +11 -0
  33. data/lib/appydave/tools/configuration/openai.rb +1 -1
  34. data/lib/appydave/tools/dam/file_helper.rb +28 -0
  35. data/lib/appydave/tools/dam/project_listing.rb +4 -30
  36. data/lib/appydave/tools/dam/s3_operations.rb +2 -1
  37. data/lib/appydave/tools/dam/ssd_status.rb +226 -0
  38. data/lib/appydave/tools/dam/status.rb +3 -51
  39. data/lib/appydave/tools/jump/cli.rb +561 -0
  40. data/lib/appydave/tools/jump/commands/add.rb +52 -0
  41. data/lib/appydave/tools/jump/commands/base.rb +43 -0
  42. data/lib/appydave/tools/jump/commands/generate.rb +153 -0
  43. data/lib/appydave/tools/jump/commands/remove.rb +58 -0
  44. data/lib/appydave/tools/jump/commands/report.rb +214 -0
  45. data/lib/appydave/tools/jump/commands/update.rb +42 -0
  46. data/lib/appydave/tools/jump/commands/validate.rb +54 -0
  47. data/lib/appydave/tools/jump/config.rb +233 -0
  48. data/lib/appydave/tools/jump/formatters/base.rb +48 -0
  49. data/lib/appydave/tools/jump/formatters/json_formatter.rb +19 -0
  50. data/lib/appydave/tools/jump/formatters/paths_formatter.rb +21 -0
  51. data/lib/appydave/tools/jump/formatters/table_formatter.rb +183 -0
  52. data/lib/appydave/tools/jump/location.rb +134 -0
  53. data/lib/appydave/tools/jump/path_validator.rb +47 -0
  54. data/lib/appydave/tools/jump/search.rb +230 -0
  55. data/lib/appydave/tools/subtitle_processor/transcript.rb +51 -0
  56. data/lib/appydave/tools/version.rb +1 -1
  57. data/lib/appydave/tools/zsh_history/command.rb +37 -0
  58. data/lib/appydave/tools/zsh_history/config.rb +235 -0
  59. data/lib/appydave/tools/zsh_history/filter.rb +184 -0
  60. data/lib/appydave/tools/zsh_history/formatter.rb +75 -0
  61. data/lib/appydave/tools/zsh_history/parser.rb +101 -0
  62. data/lib/appydave/tools.rb +25 -0
  63. data/package.json +1 -1
  64. metadata +51 -4
@@ -0,0 +1,184 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appydave
4
+ module Tools
5
+ module ZshHistory
6
+ # Applies include/exclude patterns to categorize commands
7
+ class Filter
8
+ # Default patterns used when no config file exists
9
+ DEFAULT_EXCLUDE_PATTERNS = [
10
+ '^[a-z]$', # Single letter commands (typos)
11
+ '^[a-z]{2}$', # Two letter commands (typos)
12
+ '^ls$',
13
+ '^ls -',
14
+ '^pwd$',
15
+ '^clear$',
16
+ '^exit$',
17
+ '^x$',
18
+ '^cd$',
19
+ '^cd -$',
20
+ '^cd \\.\\.$',
21
+ '^\\.\\.$',
22
+ '^git status$',
23
+ '^git diff$',
24
+ '^git log$',
25
+ '^git pull$',
26
+ '^gs$',
27
+ '^gd$',
28
+ '^gl$',
29
+ '^h$',
30
+ '^history',
31
+ '^which ',
32
+ '^type ',
33
+ '^cat ',
34
+ '^head ',
35
+ '^tail ',
36
+ '^echo \\$',
37
+ '^\\[\\d+\\]', # Output like [1234]
38
+ '^davidcruwys\\s+\\d+', # Process listing output
39
+ '^zsh: command not found',
40
+ '^X Process completed',
41
+ '^Coverage report',
42
+ '^Line Coverage:',
43
+ '^Finished in \\d',
44
+ '^\\d+ examples, \\d+ failures'
45
+ ].freeze
46
+
47
+ DEFAULT_INCLUDE_PATTERNS = [
48
+ '^j[a-z]', # Jump aliases
49
+ '^dam ', # DAM tool
50
+ '^vat ', # VAT tool
51
+ '^claude ', # Claude CLI
52
+ '^c-sonnet', # Claude sonnet alias
53
+ '^bun run ',
54
+ '^bun dev$',
55
+ '^bun web:',
56
+ '^bun worker:',
57
+ '^bun convex:',
58
+ '^npm run ',
59
+ '^rake ',
60
+ '^bundle ',
61
+ '^git commit',
62
+ '^git push',
63
+ '^git add',
64
+ '^gac ', # Git add & commit alias
65
+ '^kfeat ', # Semantic commit alias
66
+ '^kfix ', # Semantic commit alias
67
+ '^docker ',
68
+ '^docker-compose ',
69
+ '^brew install',
70
+ '^gem install',
71
+ '^npm install'
72
+ ].freeze
73
+
74
+ attr_reader :exclude_patterns, :include_patterns, :profile_name
75
+
76
+ # Initialize filter with patterns
77
+ #
78
+ # @param profile [String, nil] Profile name to load from config
79
+ # @param exclude_patterns [Array<String>, nil] Override exclude patterns
80
+ # @param include_patterns [Array<String>, nil] Override include patterns
81
+ # @param config [Config, nil] Config instance (for testing)
82
+ def initialize(profile: nil, exclude_patterns: nil, include_patterns: nil, config: nil)
83
+ @profile_name = profile
84
+ @config = config
85
+
86
+ # Load patterns: explicit params > config > defaults
87
+ exclude_list = exclude_patterns || load_exclude_patterns
88
+ include_list = include_patterns || load_include_patterns
89
+
90
+ @exclude_patterns = exclude_list.map { |p| Regexp.new(p, Regexp::IGNORECASE) }
91
+ @include_patterns = include_list.map { |p| Regexp.new(p, Regexp::IGNORECASE) }
92
+ end
93
+
94
+ def apply(commands, days: nil)
95
+ filtered = filter_by_date(commands, days)
96
+ categorize(filtered)
97
+ end
98
+
99
+ def filter_by_date(commands, days)
100
+ return commands if days.nil?
101
+
102
+ cutoff = Time.now - (days * 24 * 60 * 60)
103
+ commands.select { |cmd| cmd.datetime >= cutoff }
104
+ end
105
+
106
+ def categorize(commands)
107
+ wanted = []
108
+ unwanted = []
109
+ unsure = []
110
+
111
+ commands.each do |cmd|
112
+ category, pattern = categorize_command(cmd)
113
+ cmd.category = category
114
+ cmd.matched_pattern = pattern
115
+
116
+ case category
117
+ when :wanted
118
+ wanted << cmd
119
+ when :unwanted
120
+ unwanted << cmd
121
+ else
122
+ unsure << cmd
123
+ end
124
+ end
125
+
126
+ FilterResult.new(
127
+ wanted: wanted,
128
+ unwanted: unwanted,
129
+ unsure: unsure,
130
+ stats: build_stats(wanted, unwanted, unsure, commands)
131
+ )
132
+ end
133
+
134
+ private
135
+
136
+ def config
137
+ @config ||= Config.new(profile: profile_name)
138
+ end
139
+
140
+ def load_exclude_patterns
141
+ # Try loading from config, fall back to defaults
142
+ config_patterns = config.exclude_patterns
143
+ config_patterns || DEFAULT_EXCLUDE_PATTERNS
144
+ end
145
+
146
+ def load_include_patterns
147
+ # Try loading from config, fall back to defaults
148
+ config_patterns = config.include_patterns
149
+ config_patterns || DEFAULT_INCLUDE_PATTERNS
150
+ end
151
+
152
+ def categorize_command(cmd)
153
+ text = cmd.text
154
+
155
+ # Check exclude patterns first (noise removal)
156
+ exclude_patterns.each do |pattern|
157
+ return [:unwanted, pattern.source] if text.match?(pattern)
158
+ end
159
+
160
+ # Check include patterns
161
+ include_patterns.each do |pattern|
162
+ return [:wanted, pattern.source] if text.match?(pattern)
163
+ end
164
+
165
+ # Neither matched - unsure
166
+ [:unsure, nil]
167
+ end
168
+
169
+ def build_stats(wanted, unwanted, unsure, all_commands)
170
+ total = all_commands.size
171
+ {
172
+ total: total,
173
+ wanted: wanted.size,
174
+ unwanted: unwanted.size,
175
+ unsure: unsure.size,
176
+ wanted_pct: total.positive? ? (wanted.size.to_f / total * 100).round(1) : 0,
177
+ unwanted_pct: total.positive? ? (unwanted.size.to_f / total * 100).round(1) : 0,
178
+ unsure_pct: total.positive? ? (unsure.size.to_f / total * 100).round(1) : 0
179
+ }
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appydave
4
+ module Tools
5
+ module ZshHistory
6
+ # Handles output formatting and file writing
7
+ class Formatter
8
+ DEFAULT_DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
9
+ MAX_COMMAND_LENGTH = 200
10
+
11
+ attr_reader :datetime_format, :max_length
12
+
13
+ def initialize(datetime_format: nil, max_length: nil)
14
+ @datetime_format = datetime_format || DEFAULT_DATETIME_FORMAT
15
+ @max_length = max_length || MAX_COMMAND_LENGTH
16
+ end
17
+
18
+ def format_commands(commands, verbose: false)
19
+ commands.map { |cmd| format_command(cmd, verbose: verbose) }.join("\n")
20
+ end
21
+
22
+ def format_command(cmd, verbose: false)
23
+ datetime_str = cmd.formatted_datetime(datetime_format)
24
+ text = truncate(cmd.text)
25
+
26
+ if verbose && cmd.matched_pattern
27
+ category = cmd.category.to_s.upcase
28
+ "#{datetime_str} [#{category}: #{cmd.matched_pattern}] #{text}"
29
+ else
30
+ "#{datetime_str} #{text}"
31
+ end
32
+ end
33
+
34
+ def format_stats(stats, date_range: nil)
35
+ lines = []
36
+ lines << 'ZSH History Statistics'
37
+ lines << ('=' * 50)
38
+
39
+ lines << format('Total commands: %<total>d', stats)
40
+ lines << format('Wanted: %<wanted>d (%<wanted_pct>.1f%%)', stats)
41
+ lines << format('Unwanted: %<unwanted>d (%<unwanted_pct>.1f%%)', stats)
42
+ lines << format('Unsure: %<unsure>d (%<unsure_pct>.1f%%)', stats)
43
+
44
+ if date_range
45
+ lines << ''
46
+ lines << "Date range: #{date_range[:from]} to #{date_range[:to]} (#{date_range[:days]} days)"
47
+ end
48
+
49
+ lines.join("\n")
50
+ end
51
+
52
+ def write_history(commands, output_path, backup: true)
53
+ if backup && File.exist?(output_path)
54
+ backup_path = "#{output_path}.backup.#{Time.now.strftime('%Y%m%d-%H%M%S')}"
55
+ FileUtils.cp(output_path, backup_path)
56
+ puts "Backup created: #{backup_path}"
57
+ end
58
+
59
+ content = commands.map(&:to_history_format).join("\n")
60
+ File.write(output_path, "#{content}\n")
61
+
62
+ puts "Wrote #{commands.size} commands to #{output_path}"
63
+ end
64
+
65
+ private
66
+
67
+ def truncate(text)
68
+ return text if text.length <= max_length
69
+
70
+ "#{text[0, max_length - 3]}..."
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appydave
4
+ module Tools
5
+ module ZshHistory
6
+ # Parses ZSH history file, handling multi-line commands with \ continuations
7
+ class Parser
8
+ # ZSH history line format: : timestamp:duration;command
9
+ HISTORY_LINE_PATTERN = /^: (\d+):\d+;(.*)$/.freeze
10
+
11
+ attr_reader :file_path, :commands
12
+
13
+ def initialize(file_path = nil)
14
+ @file_path = file_path || default_history_path
15
+ @commands = []
16
+ end
17
+
18
+ def parse
19
+ return [] unless File.exist?(file_path)
20
+
21
+ lines = read_file
22
+ @commands = parse_lines(lines)
23
+ end
24
+
25
+ private
26
+
27
+ def default_history_path
28
+ File.expand_path('~/.zsh_history')
29
+ end
30
+
31
+ def read_file
32
+ # ZSH history files often contain binary/non-UTF-8 data
33
+ # Read as binary first, then force UTF-8 with invalid byte replacement
34
+ content = File.binread(file_path)
35
+ content.force_encoding('UTF-8')
36
+ content.encode!('UTF-8', invalid: :replace, undef: :replace, replace: '')
37
+ content.split("\n")
38
+ rescue Errno::ENOENT
39
+ []
40
+ rescue StandardError => e
41
+ warn "Warning: Error reading history file: #{e.message}"
42
+ []
43
+ end
44
+
45
+ def parse_lines(lines)
46
+ commands = []
47
+ current_command = nil
48
+
49
+ lines.each do |line|
50
+ if (match = line.match(HISTORY_LINE_PATTERN))
51
+ commands << current_command if current_command
52
+ current_command = process_history_line(match, line, commands)
53
+ elsif current_command
54
+ current_command = process_continuation_line(current_command, line, commands)
55
+ end
56
+ end
57
+
58
+ commands << current_command if current_command
59
+ commands
60
+ end
61
+
62
+ def process_history_line(match, line, commands)
63
+ timestamp = match[1].to_i
64
+ command_text = match[2]
65
+
66
+ if command_text.end_with?('\\')
67
+ build_command(timestamp: timestamp, text: command_text.chomp('\\'), is_multiline: true, raw_lines: [line])
68
+ else
69
+ commands << build_command(timestamp: timestamp, text: command_text, is_multiline: false, raw_lines: [line])
70
+ nil
71
+ end
72
+ end
73
+
74
+ def process_continuation_line(current_command, line, commands)
75
+ current_command.raw_lines << line
76
+
77
+ if line.end_with?('\\')
78
+ current_command.text += "\n#{line.chomp('\\')}"
79
+ current_command
80
+ else
81
+ current_command.text += "\n#{line}"
82
+ commands << current_command
83
+ nil
84
+ end
85
+ end
86
+
87
+ def build_command(timestamp:, text:, is_multiline:, raw_lines:)
88
+ Command.new(
89
+ timestamp: timestamp,
90
+ datetime: Time.at(timestamp),
91
+ text: text.strip,
92
+ is_multiline: is_multiline,
93
+ category: nil,
94
+ raw_lines: raw_lines,
95
+ matched_pattern: nil
96
+ )
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -51,6 +51,13 @@ require 'appydave/tools/prompt_tools/prompt_completion'
51
51
 
52
52
  require 'appydave/tools/subtitle_processor/clean'
53
53
  require 'appydave/tools/subtitle_processor/join'
54
+ require 'appydave/tools/subtitle_processor/transcript'
55
+
56
+ require 'appydave/tools/zsh_history/command'
57
+ require 'appydave/tools/zsh_history/config'
58
+ require 'appydave/tools/zsh_history/parser'
59
+ require 'appydave/tools/zsh_history/filter'
60
+ require 'appydave/tools/zsh_history/formatter'
54
61
 
55
62
  require 'appydave/tools/dam/errors'
56
63
  require 'appydave/tools/dam/file_helper'
@@ -67,10 +74,28 @@ require 'appydave/tools/dam/project_listing'
67
74
  require 'appydave/tools/dam/manifest_generator'
68
75
  require 'appydave/tools/dam/sync_from_ssd'
69
76
  require 'appydave/tools/dam/status'
77
+ require 'appydave/tools/dam/ssd_status'
70
78
  require 'appydave/tools/dam/repo_status'
71
79
  require 'appydave/tools/dam/repo_sync'
72
80
  require 'appydave/tools/dam/repo_push'
73
81
 
82
+ require 'appydave/tools/jump/path_validator'
83
+ require 'appydave/tools/jump/location'
84
+ require 'appydave/tools/jump/config'
85
+ require 'appydave/tools/jump/search'
86
+ require 'appydave/tools/jump/formatters/base'
87
+ require 'appydave/tools/jump/formatters/json_formatter'
88
+ require 'appydave/tools/jump/formatters/paths_formatter'
89
+ require 'appydave/tools/jump/formatters/table_formatter'
90
+ require 'appydave/tools/jump/commands/base'
91
+ require 'appydave/tools/jump/commands/add'
92
+ require 'appydave/tools/jump/commands/update'
93
+ require 'appydave/tools/jump/commands/remove'
94
+ require 'appydave/tools/jump/commands/validate'
95
+ require 'appydave/tools/jump/commands/report'
96
+ require 'appydave/tools/jump/commands/generate'
97
+ require 'appydave/tools/jump/cli'
98
+
74
99
  require 'appydave/tools/youtube_automation/gpt_agent'
75
100
 
76
101
  require 'appydave/tools/youtube_manager/models/youtube_details'
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appydave-tools",
3
- "version": "0.70.0",
3
+ "version": "0.71.0",
4
4
  "description": "AppyDave YouTube Automation Tools",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appydave-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.70.0
4
+ version: 0.71.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-11-26 00:00:00.000000000 Z
11
+ date: 2025-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -188,10 +188,12 @@ executables:
188
188
  - ad_config
189
189
  - dam
190
190
  - gpt_context
191
+ - jump
191
192
  - prompt_tools
192
- - subtitle_manager
193
+ - subtitle_processor
193
194
  - youtube_automation
194
195
  - youtube_manager
196
+ - zsh_history
195
197
  extensions: []
196
198
  extra_rdoc_files: []
197
199
  files:
@@ -199,6 +201,12 @@ files:
199
201
  - ".builders/_.rb"
200
202
  - ".builders/boot.rb"
201
203
  - ".builders/generators/01-bootstrap.rb"
204
+ - ".claude/commands/brainstorming-agent.md"
205
+ - ".claude/commands/cli-test.md"
206
+ - ".claude/commands/dev.md"
207
+ - ".claude/commands/po.md"
208
+ - ".claude/commands/progress.md"
209
+ - ".claude/commands/uat.md"
202
210
  - ".releaserc.json"
203
211
  - ".rspec"
204
212
  - ".rubocop.yml"
@@ -218,6 +226,7 @@ files:
218
226
  - bin/dam
219
227
  - bin/generate_manifest.rb
220
228
  - bin/gpt_context.rb
229
+ - bin/jump.rb
221
230
  - bin/move_images.rb
222
231
  - bin/prompt_tools.rb
223
232
  - bin/setup
@@ -227,12 +236,15 @@ files:
227
236
  - bin/sync_from_ssd.rb
228
237
  - bin/youtube_automation.rb
229
238
  - bin/youtube_manager.rb
239
+ - bin/zsh_history.rb
230
240
  - docs/README.md
231
241
  - docs/ai-instructions/behavioral-regression-audit.md
232
242
  - docs/ai-instructions/code-quality-retrospective.md
233
243
  - docs/ai-instructions/defensive-logging-audit.md
244
+ - docs/architecture/cli-patterns.md
234
245
  - docs/architecture/cli/cli-pattern-comparison.md
235
246
  - docs/architecture/cli/cli-patterns.md
247
+ - docs/architecture/cli/exe-bin-convention.md
236
248
  - docs/architecture/configuration/configuration-systems.md
237
249
  - docs/architecture/dam/dam-cli-enhancements.md
238
250
  - docs/architecture/dam/dam-cli-implementation-guide.md
@@ -245,12 +257,18 @@ files:
245
257
  - docs/architecture/dam/jan-collaboration-guide.md
246
258
  - docs/architecture/design-decisions/001-unified-brands-config.md
247
259
  - docs/architecture/design-decisions/session-2025-11-09.md
260
+ - docs/architecture/gpt-context/gpt-context-architecture.md
261
+ - docs/architecture/gpt-context/gpt-context-implementation-guide.md
262
+ - docs/architecture/gpt-context/gpt-context-vision.md
263
+ - docs/architecture/testing/testing-patterns.md
248
264
  - docs/archive/codebase-audit-2025-01.md
249
265
  - docs/archive/documentation-framework-proposal.md
250
266
  - docs/archive/purpose-and-philosophy.md
251
267
  - docs/archive/test-coverage-quick-wins.md
252
268
  - docs/archive/tool-discovery.md
253
269
  - docs/archive/tool-documentation-analysis.md
270
+ - docs/backlog.md
271
+ - docs/cli-tests/FR-3-jump-location-tool.md
254
272
  - docs/code-quality/README.md
255
273
  - docs/code-quality/behavioral-audit-2025-01-22.md
256
274
  - docs/code-quality/implementation-plan.md
@@ -276,16 +294,22 @@ files:
276
294
  - docs/guides/tools/video-file-namer.md
277
295
  - docs/guides/tools/youtube-automation.md
278
296
  - docs/guides/tools/youtube-manager.md
297
+ - docs/specs/fr-002-gpt-context-help-system.md
298
+ - docs/specs/fr-003-jump-location-tool.md
299
+ - docs/specs/zsh-history-tool.md
279
300
  - docs/templates/.env.example
280
301
  - docs/templates/channels.example.json
281
302
  - docs/templates/settings.example.json
303
+ - docs/uat/FR-3-jump-location-tool.md
282
304
  - exe/ad_config
283
305
  - exe/dam
284
306
  - exe/gpt_context
307
+ - exe/jump
285
308
  - exe/prompt_tools
286
- - exe/subtitle_manager
309
+ - exe/subtitle_processor
287
310
  - exe/youtube_automation
288
311
  - exe/youtube_manager
312
+ - exe/zsh_history
289
313
  - images.log
290
314
  - lib/appydave/tools.rb
291
315
  - lib/appydave/tools/cli_actions/_doc.md
@@ -319,6 +343,7 @@ files:
319
343
  - lib/appydave/tools/dam/s3_operations.rb
320
344
  - lib/appydave/tools/dam/s3_scanner.rb
321
345
  - lib/appydave/tools/dam/share_operations.rb
346
+ - lib/appydave/tools/dam/ssd_status.rb
322
347
  - lib/appydave/tools/dam/status.rb
323
348
  - lib/appydave/tools/dam/sync_from_ssd.rb
324
349
  - lib/appydave/tools/debuggable.rb
@@ -326,6 +351,22 @@ files:
326
351
  - lib/appydave/tools/gpt_context/file_collector.rb
327
352
  - lib/appydave/tools/gpt_context/options.rb
328
353
  - lib/appydave/tools/gpt_context/output_handler.rb
354
+ - lib/appydave/tools/jump/cli.rb
355
+ - lib/appydave/tools/jump/commands/add.rb
356
+ - lib/appydave/tools/jump/commands/base.rb
357
+ - lib/appydave/tools/jump/commands/generate.rb
358
+ - lib/appydave/tools/jump/commands/remove.rb
359
+ - lib/appydave/tools/jump/commands/report.rb
360
+ - lib/appydave/tools/jump/commands/update.rb
361
+ - lib/appydave/tools/jump/commands/validate.rb
362
+ - lib/appydave/tools/jump/config.rb
363
+ - lib/appydave/tools/jump/formatters/base.rb
364
+ - lib/appydave/tools/jump/formatters/json_formatter.rb
365
+ - lib/appydave/tools/jump/formatters/paths_formatter.rb
366
+ - lib/appydave/tools/jump/formatters/table_formatter.rb
367
+ - lib/appydave/tools/jump/location.rb
368
+ - lib/appydave/tools/jump/path_validator.rb
369
+ - lib/appydave/tools/jump/search.rb
329
370
  - lib/appydave/tools/llm/models/llm_info.rb
330
371
  - lib/appydave/tools/llm/openai_completion.rb
331
372
  - lib/appydave/tools/name_manager/_doc.md
@@ -337,6 +378,7 @@ files:
337
378
  - lib/appydave/tools/subtitle_processor/_doc-todo.md
338
379
  - lib/appydave/tools/subtitle_processor/clean.rb
339
380
  - lib/appydave/tools/subtitle_processor/join.rb
381
+ - lib/appydave/tools/subtitle_processor/transcript.rb
340
382
  - lib/appydave/tools/types/array_type.rb
341
383
  - lib/appydave/tools/types/base_model.rb
342
384
  - lib/appydave/tools/types/hash_type.rb
@@ -353,6 +395,11 @@ files:
353
395
  - lib/appydave/tools/youtube_manager/reports/video_details_report.rb
354
396
  - lib/appydave/tools/youtube_manager/update_video.rb
355
397
  - lib/appydave/tools/youtube_manager/youtube_base.rb
398
+ - lib/appydave/tools/zsh_history/command.rb
399
+ - lib/appydave/tools/zsh_history/config.rb
400
+ - lib/appydave/tools/zsh_history/filter.rb
401
+ - lib/appydave/tools/zsh_history/formatter.rb
402
+ - lib/appydave/tools/zsh_history/parser.rb
356
403
  - package.json
357
404
  - sig/appydave/tools.rbs
358
405
  homepage: http://appydave.com/gems/appydave-tools