aia 0.0.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a080fd671c1e5e3f9420f036892afb69a8d4190745da8bbce82620356ae2ad10
4
- data.tar.gz: ffe746cbcb3a24216f39f4ec220b962828ab925041fe6f97f006676988006690
3
+ metadata.gz: c4d68353a3458a4a3e485acbf09ec6444e63d33ddaedca66a1f48aaf38b31a96
4
+ data.tar.gz: b2d07bde2cb329db6f23ccda5c845b67251f00f5bdfab680406d671a32ee0b32
5
5
  SHA512:
6
- metadata.gz: 6ac1c123e391a981800ac8777e31de96cc68af4747e0756902c3f3bd6eaa3fef4c23e425ff7d951c63f93ee5dbb85c1573f8434958dd3e6ce142579f52bf7bd6
7
- data.tar.gz: ed7e48ffa949db795884eb0d552a3ac312079dce7152fd45643191f2907ff5a697d334cc26a492cee44a649420fecaf9d6063dfc72ff82e7bd226dc2a77e81c6
6
+ metadata.gz: d27e5190de909b14a71a52f2eea78b8d948de6cbe5c621f3b10e819404d0a9a78087c5da748598b6dfbf8af88ece61382c407d62382eadb062ad0582d5f4b8f9
7
+ data.tar.gz: 6cc9b0ad1d570f0cb994e06af614d4faea07b356303042fa1e1bfe03ed12a62f273824e0240b8bb2cb46a64b6f195dd715b15161a228255f3d2639fc1648e61e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.0] = 2023-11-23
4
+
5
+ - Matching version to [prompt_manager](https://github.com/prompt_manager) This version allows for the user of history in the entery of values to prompt keywords. KW_HISTORY_MAX is set at 5. Changed CLI enteraction to use historical selection and editing of prior keyword values.
6
+
3
7
  ## [0.1.0] - 2023-11-23
4
8
 
5
9
  - Initial release
data/README.md CHANGED
@@ -1,11 +1,27 @@
1
1
  # AI Assistant (AIA)
2
2
 
3
- **Under Development**
4
-
5
3
  `aia` is a command-line utility that integrates prameterized prompt management with generative AI (gen-AI) execution.
6
4
 
7
5
  Uses the gem "prompt_manager" to manage the prompts sent to the `mods` command-line utility. Uses the command line tools "ripgrep" to search for prompts to send and "fzf" to select the prompts that match the search term.
8
6
 
7
+ **Most Recent Change**
8
+
9
+ v0.3.0 - Matching version to [prompt_manager](https://github.com/prompt_manager) This version allows for the user of history in the entery of values to prompt keywords. KW_HISTORY_MAX is set at 5. Changed CLI enteraction to use historical selection and editing of prior keyword values.
10
+
11
+
12
+ <!-- Tocer[start]: Auto-generated, don't remove. -->
13
+
14
+ ## Table of Contents
15
+
16
+ - [Installation](#installation)
17
+ - [Usage](#usage)
18
+ - [System Environment Variables (envars)](#system-environment-variables-envars)
19
+ - [External CLI Tools Used](#external-cli-tools-used)
20
+ - [Development](#development)
21
+ - [Contributing](#contributing)
22
+ - [License](#license)
23
+
24
+ <!-- Tocer[finish]: Auto-generated, don't remove. -->
9
25
 
10
26
 
11
27
  ## Installation
@@ -138,6 +154,12 @@ export EDITOR="subl -w"
138
154
 
139
155
  ```
140
156
 
157
+ ## Shell Completion
158
+
159
+ One of the executables with this gem is `aia_completion.sh` which contains a completion script for hte `aia` such that you specify the first few characters of a prompt ID on the command line and the shell will complete the rest of the ID for you. It works with the `bash` shell but do not know whether it works with the other shells.
160
+
161
+ To set the completion you can execute aia_completion.sh` in your `.bashrc` however, the PROMPTS_DIR environment variable must be set in order for prompt ID to work correctly.
162
+
141
163
 
142
164
  ## Development
143
165
 
data/lib/aia/cli.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  module AIA::Cli
4
4
  def setup_cli_options(args)
5
5
  @arguments = args
6
+ # TODO: consider a fixed config file: ~/,aia
6
7
  @options = {
7
8
  # Value
8
9
  edit?: [false, "-e --edit", "Edit the Prompt File"],
@@ -16,6 +17,7 @@ module AIA::Cli
16
17
  output: [OUTPUT,"-o --output --no-output", "Out FILENAME"],
17
18
  log: [PROMPT_LOG,"-l --log --no-log", "Log FILEPATH"],
18
19
  markdown?: [true, "-m --markdown --no-markdown --md --no-md", "Format with Markdown"],
20
+ backend: [:mods, "-b --be --backend --no-backend", "Specify the backend prompt resolver"],
19
21
  }
20
22
 
21
23
  # Array(String)
@@ -175,35 +177,3 @@ module AIA::Cli
175
177
  exit
176
178
  end
177
179
  end
178
-
179
-
180
- __END__
181
-
182
-
183
- # TODO: Consider using this history process to preload the default
184
- # so that an up arrow will bring the previous answer into
185
- # the read buffer for line editing.
186
- # Instead of usin the .history file just push the default
187
- # value from the JSON file.
188
-
189
- while input = Readline.readline('> ', true)
190
- # Skip empty entries and duplicates
191
- if input.empty? || Readline::HISTORY.to_a[-2] == input
192
- Readline::HISTORY.pop
193
- end
194
- break if input == 'exit'
195
-
196
- # Do something with the input
197
- puts "You entered: #{input}"
198
-
199
- # Save the history in case you want to preserve it for the next sessions
200
- File.open('.history', 'a') { |f| f.puts(input) }
201
- end
202
-
203
- # Load history from file at the beginning of the program
204
- if File.exist?('.history')
205
- File.readlines('.history').each do |line|
206
- Readline::HISTORY.push(line.chomp)
207
- end
208
- end
209
-
File without changes
@@ -0,0 +1,11 @@
1
+
2
+
3
+
4
+ module AIA
5
+ module External
6
+ end
7
+ end
8
+
9
+ require_relative 'tool'
10
+ include AIA
11
+ include External
@@ -0,0 +1,103 @@
1
+ # lib/aia/external/ag.rb
2
+
3
+ class AIA::External::Ag < AIA::External::Tool
4
+ def initialize
5
+ super
6
+ @role = :search
7
+ @desc = "the_silver_searcher Code-search similar to ack"
8
+ @url = "https://github.com/ggreer/the_silver_searcher"
9
+ end
10
+ end
11
+
12
+ __END__
13
+
14
+ Usage: ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]
15
+
16
+ Recursively search for PATTERN in PATH.
17
+ Like grep or ack, but faster.
18
+
19
+ Example:
20
+ ag -i foo /bar/
21
+
22
+ Output Options:
23
+ --ackmate Print results in AckMate-parseable format
24
+ -A --after [LINES] Print lines after match (Default: 2)
25
+ -B --before [LINES] Print lines before match (Default: 2)
26
+ --[no]break Print newlines between matches in different files
27
+ (Enabled by default)
28
+ -c --count Only print the number of matches in each file.
29
+ (This often differs from the number of matching lines)
30
+ --[no]color Print color codes in results (Enabled by default)
31
+ --color-line-number Color codes for line numbers (Default: 1;33)
32
+ --color-match Color codes for result match numbers (Default: 30;43)
33
+ --color-path Color codes for path names (Default: 1;32)
34
+ --column Print column numbers in results
35
+ --[no]filename Print file names (Enabled unless searching a single file)
36
+ -H --[no]heading Print file names before each file's matches
37
+ (Enabled by default)
38
+ -C --context [LINES] Print lines before and after matches (Default: 2)
39
+ --[no]group Same as --[no]break --[no]heading
40
+ -g --filename-pattern PATTERN
41
+ Print filenames matching PATTERN
42
+ -l --files-with-matches Only print filenames that contain matches
43
+ (don't print the matching lines)
44
+ -L --files-without-matches
45
+ Only print filenames that don't contain matches
46
+ --print-all-files Print headings for all files searched, even those that
47
+ don't contain matches
48
+ --[no]numbers Print line numbers. Default is to omit line numbers
49
+ when searching streams
50
+ -o --only-matching Prints only the matching part of the lines
51
+ --print-long-lines Print matches on very long lines (Default: >2k characters)
52
+ --passthrough When searching a stream, print all lines even if they
53
+ don't match
54
+ --silent Suppress all log messages, including errors
55
+ --stats Print stats (files scanned, time taken, etc.)
56
+ --stats-only Print stats and nothing else.
57
+ (Same as --count when searching a single file)
58
+ --vimgrep Print results like vim's :vimgrep /pattern/g would
59
+ (it reports every match on the line)
60
+ -0 --null --print0 Separate filenames with null (for 'xargs -0')
61
+
62
+ Search Options:
63
+ -a --all-types Search all files (doesn't include hidden files
64
+ or patterns from ignore files)
65
+ -D --debug Ridiculous debugging (probably not useful)
66
+ --depth NUM Search up to NUM directories deep (Default: 25)
67
+ -f --follow Follow symlinks
68
+ -F --fixed-strings Alias for --literal for compatibility with grep
69
+ -G --file-search-regex PATTERN Limit search to filenames matching PATTERN
70
+ --hidden Search hidden files (obeys .*ignore files)
71
+ -i --ignore-case Match case insensitively
72
+ --ignore PATTERN Ignore files/directories matching PATTERN
73
+ (literal file/directory names also allowed)
74
+ --ignore-dir NAME Alias for --ignore for compatibility with ack.
75
+ -m --max-count NUM Skip the rest of a file after NUM matches (Default: 10,000)
76
+ --one-device Don't follow links to other devices.
77
+ -p --path-to-ignore STRING
78
+ Use .ignore file at STRING
79
+ -Q --literal Don't parse PATTERN as a regular expression
80
+ -s --case-sensitive Match case sensitively
81
+ -S --smart-case Match case insensitively unless PATTERN contains
82
+ uppercase characters (Enabled by default)
83
+ --search-binary Search binary files for matches
84
+ -t --all-text Search all text files (doesn't include hidden files)
85
+ -u --unrestricted Search all files (ignore .ignore, .gitignore, etc.;
86
+ searches binary and hidden files as well)
87
+ -U --skip-vcs-ignores Ignore VCS ignore files
88
+ (.gitignore, .hgignore; still obey .ignore)
89
+ -v --invert-match
90
+ -w --word-regexp Only match whole words
91
+ -W --width NUM Truncate match lines after NUM characters
92
+ -z --search-zip Search contents of compressed (e.g., gzip) files
93
+
94
+ File Types:
95
+ The search can be restricted to certain types of files. Example:
96
+ ag --html needle
97
+ - Searches for 'needle' in files with suffix .htm, .html, .shtml or .xhtml.
98
+
99
+ For a list of supported file types run:
100
+ ag --list-file-types
101
+
102
+ ag was originally created by Geoff Greer. More information (and the latest release)
103
+ can be found at http://geoff.greer.fm/ag
@@ -0,0 +1,189 @@
1
+ # lib/aia/external/bat.rb
2
+
3
+ class AIA::External::Bat < AIA::External::Tool
4
+ def initialize
5
+ super
6
+ @role = :render
7
+ @desc = 'Clone of cat(1) with syntax highlighting and Git integration'
8
+ @url = 'https://github.com/sharkdp/bat'
9
+ end
10
+ end
11
+
12
+ __END__
13
+
14
+
15
+ A cat(1) clone with syntax highlighting and Git integration.
16
+
17
+ Usage: bat [OPTIONS] [FILE]...
18
+ bat <COMMAND>
19
+
20
+ Arguments:
21
+ [FILE]...
22
+ File(s) to print / concatenate. Use a dash ('-') or no argument at all to read from
23
+ standard input.
24
+
25
+ Options:
26
+ -A, --show-all
27
+ Show non-printable characters like space, tab or newline. This option can also be
28
+ used to print binary files. Use '--tabs' to control the width of the
29
+ tab-placeholders.
30
+
31
+ --nonprintable-notation <notation>
32
+ Set notation for non-printable characters.
33
+
34
+ Possible values:
35
+ * unicode (␇, ␊, ␀, ..)
36
+ * caret (^G, ^J, ^@, ..)
37
+
38
+ -p, --plain...
39
+ Only show plain style, no decorations. This is an alias for '--style=plain'. When
40
+ '-p' is used twice ('-pp'), it also disables automatic paging (alias for
41
+ '--style=plain --paging=never').
42
+
43
+ -l, --language <language>
44
+ Explicitly set the language for syntax highlighting. The language can be specified as
45
+ a name (like 'C++' or 'LaTeX') or possible file extension (like 'cpp', 'hpp' or
46
+ 'md'). Use '--list-languages' to show all supported language names and file
47
+ extensions.
48
+
49
+ -H, --highlight-line <N:M>
50
+ Highlight the specified line ranges with a different background color For example:
51
+ '--highlight-line 40' highlights line 40
52
+ '--highlight-line 30:40' highlights lines 30 to 40
53
+ '--highlight-line :40' highlights lines 1 to 40
54
+ '--highlight-line 40:' highlights lines 40 to the end of the file
55
+ '--highlight-line 30:+10' highlights lines 30 to 40
56
+
57
+ --file-name <name>
58
+ Specify the name to display for a file. Useful when piping data to bat from STDIN
59
+ when bat does not otherwise know the filename. Note that the provided file name is
60
+ also used for syntax detection.
61
+
62
+ -d, --diff
63
+ Only show lines that have been added/removed/modified with respect to the Git index.
64
+ Use --diff-context=N to control how much context you want to see.
65
+
66
+ --diff-context <N>
67
+ Include N lines of context around added/removed/modified lines when using '--diff'.
68
+
69
+ --tabs <T>
70
+ Set the tab width to T spaces. Use a width of 0 to pass tabs through directly
71
+
72
+ --wrap <mode>
73
+ Specify the text-wrapping mode (*auto*, never, character). The '--terminal-width'
74
+ option can be used in addition to control the output width.
75
+
76
+ -S, --chop-long-lines
77
+ Truncate all lines longer than screen width. Alias for '--wrap=never'.
78
+
79
+ --terminal-width <width>
80
+ Explicitly set the width of the terminal instead of determining it automatically. If
81
+ prefixed with '+' or '-', the value will be treated as an offset to the actual
82
+ terminal width. See also: '--wrap'.
83
+
84
+ -n, --number
85
+ Only show line numbers, no other decorations. This is an alias for '--style=numbers'
86
+
87
+ --color <when>
88
+ Specify when to use colored output. The automatic mode only enables colors if an
89
+ interactive terminal is detected - colors are automatically disabled if the output
90
+ goes to a pipe.
91
+ Possible values: *auto*, never, always.
92
+
93
+ --italic-text <when>
94
+ Specify when to use ANSI sequences for italic text in the output. Possible values:
95
+ always, *never*.
96
+
97
+ --decorations <when>
98
+ Specify when to use the decorations that have been specified via '--style'. The
99
+ automatic mode only enables decorations if an interactive terminal is detected.
100
+ Possible values: *auto*, never, always.
101
+
102
+ -f, --force-colorization
103
+ Alias for '--decorations=always --color=always'. This is useful if the output of bat
104
+ is piped to another program, but you want to keep the colorization/decorations.
105
+
106
+ --paging <when>
107
+ Specify when to use the pager. To disable the pager, use --paging=never' or its
108
+ alias,'-P'. To disable the pager permanently, set BAT_PAGING to 'never'. To control
109
+ which pager is used, see the '--pager' option. Possible values: *auto*, never,
110
+ always.
111
+
112
+ --pager <command>
113
+ Determine which pager is used. This option will override the PAGER and BAT_PAGER
114
+ environment variables. The default pager is 'less'. To control when the pager is
115
+ used, see the '--paging' option. Example: '--pager "less -RF"'.
116
+
117
+ -m, --map-syntax <glob:syntax>
118
+ Map a glob pattern to an existing syntax name. The glob pattern is matched on the
119
+ full path and the filename. For example, to highlight *.build files with the Python
120
+ syntax, use -m '*.build:Python'. To highlight files named '.myignore' with the Git
121
+ Ignore syntax, use -m '.myignore:Git Ignore'. Note that the right-hand side is the
122
+ *name* of the syntax, not a file extension.
123
+
124
+ --ignored-suffix <ignored-suffix>
125
+ Ignore extension. For example:
126
+ 'bat --ignored-suffix ".dev" my_file.json.dev' will use JSON syntax, and ignore
127
+ '.dev'
128
+
129
+ --theme <theme>
130
+ Set the theme for syntax highlighting. Use '--list-themes' to see all available
131
+ themes. To set a default theme, add the '--theme="..."' option to the configuration
132
+ file or export the BAT_THEME environment variable (e.g.: export BAT_THEME="...").
133
+
134
+ --list-themes
135
+ Display a list of supported themes for syntax highlighting.
136
+
137
+ --style <components>
138
+ Configure which elements (line numbers, file headers, grid borders, Git
139
+ modifications, ..) to display in addition to the file contents. The argument is a
140
+ comma-separated list of components to display (e.g. 'numbers,changes,grid') or a
141
+ pre-defined style ('full'). To set a default style, add the '--style=".."' option to
142
+ the configuration file or export the BAT_STYLE environment variable (e.g.: export
143
+ BAT_STYLE="..").
144
+
145
+ Possible values:
146
+
147
+ * default: enables recommended style components (default).
148
+ * full: enables all available components.
149
+ * auto: same as 'default', unless the output is piped.
150
+ * plain: disables all available components.
151
+ * changes: show Git modification markers.
152
+ * header: alias for 'header-filename'.
153
+ * header-filename: show filenames before the content.
154
+ * header-filesize: show file sizes before the content.
155
+ * grid: vertical/horizontal lines to separate side bar
156
+ and the header from the content.
157
+ * rule: horizontal lines to delimit files.
158
+ * numbers: show line numbers in the side bar.
159
+ * snip: draw separation lines between distinct line ranges.
160
+
161
+ -r, --line-range <N:M>
162
+ Only print the specified range of lines for each file. For example:
163
+ '--line-range 30:40' prints lines 30 to 40
164
+ '--line-range :40' prints lines 1 to 40
165
+ '--line-range 40:' prints lines 40 to the end of the file
166
+ '--line-range 40' only prints line 40
167
+ '--line-range 30:+10' prints lines 30 to 40
168
+
169
+ -L, --list-languages
170
+ Display a list of supported languages for syntax highlighting.
171
+
172
+ -u, --unbuffered
173
+ This option exists for POSIX-compliance reasons ('u' is for 'unbuffered'). The output
174
+ is always unbuffered - this option is simply ignored.
175
+
176
+ --diagnostic
177
+ Show diagnostic information for bug reports.
178
+
179
+ --acknowledgements
180
+ Show acknowledgements.
181
+
182
+ -h, --help
183
+ Print help (see a summary with '-h')
184
+
185
+ -V, --version
186
+ Print version
187
+
188
+ You can use 'bat cache' to customize syntaxes and themes. See 'bat cache --help' for more
189
+ information
@@ -0,0 +1,147 @@
1
+ # lib/aia/external/fzf.rb
2
+
3
+ class AIA::External::Fzf < AIA::External::Tool
4
+ def initialize
5
+ super
6
+ @role = :selecter
7
+ @desc = 'Command-line fuzzy finder written in Go'
8
+ @url = 'https://github.com/junegunn/fzf'
9
+ end
10
+
11
+
12
+ def command(options = {})
13
+ cd_command = "cd #{options[:prompt_dir]}"
14
+ find_command = "find . -name '*.txt'"
15
+ fzf_options = build_fzf_options(options[:fuzzy])
16
+ "#{cd_command} ; #{find_command} | fzf #{fzf_options}"
17
+ end
18
+
19
+ private
20
+
21
+ def build_fzf_options(fuzzy)
22
+ [
23
+ "--tabstop=2",
24
+ "--header='Prompt contents below'",
25
+ "--header-first",
26
+ "--prompt='Search term: '",
27
+ '--delimiter :',
28
+ "--preview 'ww {1}'", # 'ww' from word_wrap gem
29
+ "--preview-window=down:50%:wrap"
30
+ ].tap { |opts| opts << "--exact" unless fuzzy }.join(' ')
31
+ end
32
+ end
33
+
34
+ __END__
35
+
36
+ usage: fzf [options]
37
+
38
+ Search
39
+ -x, --extended Extended-search mode
40
+ (enabled by default; +x or --no-extended to disable)
41
+ -e, --exact Enable Exact-match
42
+ -i Case-insensitive match (default: smart-case match)
43
+ +i Case-sensitive match
44
+ --scheme=SCHEME Scoring scheme [default|path|history]
45
+ --literal Do not normalize latin script letters before matching
46
+ -n, --nth=N[,..] Comma-separated list of field index expressions
47
+ for limiting search scope. Each can be a non-zero
48
+ integer or a range expression ([BEGIN]..[END]).
49
+ --with-nth=N[,..] Transform the presentation of each line using
50
+ field index expressions
51
+ -d, --delimiter=STR Field delimiter regex (default: AWK-style)
52
+ +s, --no-sort Do not sort the result
53
+ --track Track the current selection when the result is updated
54
+ --tac Reverse the order of the input
55
+ --disabled Do not perform search
56
+ --tiebreak=CRI[,..] Comma-separated list of sort criteria to apply
57
+ when the scores are tied [length|chunk|begin|end|index]
58
+ (default: length)
59
+
60
+ Interface
61
+ -m, --multi[=MAX] Enable multi-select with tab/shift-tab
62
+ --no-mouse Disable mouse
63
+ --bind=KEYBINDS Custom key bindings. Refer to the man page.
64
+ --cycle Enable cyclic scroll
65
+ --keep-right Keep the right end of the line visible on overflow
66
+ --scroll-off=LINES Number of screen lines to keep above or below when
67
+ scrolling to the top or to the bottom (default: 0)
68
+ --no-hscroll Disable horizontal scroll
69
+ --hscroll-off=COLS Number of screen columns to keep to the right of the
70
+ highlighted substring (default: 10)
71
+ --filepath-word Make word-wise movements respect path separators
72
+ --jump-labels=CHARS Label characters for jump and jump-accept
73
+
74
+ Layout
75
+ --height=[~]HEIGHT[%] Display fzf window below the cursor with the given
76
+ height instead of using fullscreen.
77
+ If prefixed with '~', fzf will determine the height
78
+ according to the input size.
79
+ --min-height=HEIGHT Minimum height when --height is given in percent
80
+ (default: 10)
81
+ --layout=LAYOUT Choose layout: [default|reverse|reverse-list]
82
+ --border[=STYLE] Draw border around the finder
83
+ [rounded|sharp|bold|block|thinblock|double|horizontal|vertical|
84
+ top|bottom|left|right|none] (default: rounded)
85
+ --border-label=LABEL Label to print on the border
86
+ --border-label-pos=COL Position of the border label
87
+ [POSITIVE_INTEGER: columns from left|
88
+ NEGATIVE_INTEGER: columns from right][:bottom]
89
+ (default: 0 or center)
90
+ --margin=MARGIN Screen margin (TRBL | TB,RL | T,RL,B | T,R,B,L)
91
+ --padding=PADDING Padding inside border (TRBL | TB,RL | T,RL,B | T,R,B,L)
92
+ --info=STYLE Finder info style
93
+ [default|right|hidden|inline[:SEPARATOR]|inline-right]
94
+ --separator=STR String to form horizontal separator on info line
95
+ --no-separator Hide info line separator
96
+ --scrollbar[=C1[C2]] Scrollbar character(s) (each for main and preview window)
97
+ --no-scrollbar Hide scrollbar
98
+ --prompt=STR Input prompt (default: '> ')
99
+ --pointer=STR Pointer to the current line (default: '>')
100
+ --marker=STR Multi-select marker (default: '>')
101
+ --header=STR String to print as header
102
+ --header-lines=N The first N lines of the input are treated as header
103
+ --header-first Print header before the prompt line
104
+ --ellipsis=STR Ellipsis to show when line is truncated (default: '..')
105
+
106
+ Display
107
+ --ansi Enable processing of ANSI color codes
108
+ --tabstop=SPACES Number of spaces for a tab character (default: 8)
109
+ --color=COLSPEC Base scheme (dark|light|16|bw) and/or custom colors
110
+ --no-bold Do not use bold text
111
+
112
+ History
113
+ --history=FILE History file
114
+ --history-size=N Maximum number of history entries (default: 1000)
115
+
116
+ Preview
117
+ --preview=COMMAND Command to preview highlighted line ({})
118
+ --preview-window=OPT Preview window layout (default: right:50%)
119
+ [up|down|left|right][,SIZE[%]]
120
+ [,[no]wrap][,[no]cycle][,[no]follow][,[no]hidden]
121
+ [,border-BORDER_OPT]
122
+ [,+SCROLL[OFFSETS][/DENOM]][,~HEADER_LINES]
123
+ [,default][,<SIZE_THRESHOLD(ALTERNATIVE_LAYOUT)]
124
+ --preview-label=LABEL
125
+ --preview-label-pos=N Same as --border-label and --border-label-pos,
126
+ but for preview window
127
+
128
+ Scripting
129
+ -q, --query=STR Start the finder with the given query
130
+ -1, --select-1 Automatically select the only match
131
+ -0, --exit-0 Exit immediately when there's no match
132
+ -f, --filter=STR Filter mode. Do not start interactive finder.
133
+ --print-query Print query as the first line
134
+ --expect=KEYS Comma-separated list of keys to complete fzf
135
+ --read0 Read input delimited by ASCII NUL characters
136
+ --print0 Print output delimited by ASCII NUL characters
137
+ --sync Synchronous search for multi-staged filtering
138
+ --listen[=[ADDR:]PORT] Start HTTP server to receive actions (POST /)
139
+ (To allow remote process execution, use --listen-unsafe)
140
+ --version Display version information and exit
141
+
142
+ Environment variables
143
+ FZF_DEFAULT_COMMAND Default command to use when input is tty
144
+ FZF_DEFAULT_OPTS Default options
145
+ (e.g. '--layout=reverse --inline-info')
146
+ FZF_API_KEY X-API-Key header for HTTP server (--listen)
147
+
@@ -0,0 +1,37 @@
1
+ # lib/aia/external/glow.rb
2
+
3
+ class AIA::External::Glow < AIA::External::Tool
4
+ def initialize
5
+ super
6
+ @role = :render
7
+ @desc = 'Render markdown on the CLI'
8
+ @url = 'https://github.com/charmbracelet/glow'
9
+ end
10
+ end
11
+
12
+
13
+ __END__
14
+
15
+ Render markdown on the CLI, with pizzazz!
16
+
17
+ Usage:
18
+ glow [SOURCE|DIR] [flags]
19
+ glow [command]
20
+
21
+ Available Commands:
22
+ completion Generate the autocompletion script for the specified shell
23
+ config Edit the glow config file
24
+ help Help about any command
25
+ stash Stash a markdown
26
+
27
+ Flags:
28
+ -a, --all show system files and directories (TUI-mode only)
29
+ --config string config file (default /Users/dewayne/Library/Preferences/glow/glow.yml)
30
+ -h, --help help for glow
31
+ -l, --local show local files only; no network (TUI-mode only)
32
+ -p, --pager display with pager
33
+ -s, --style string style name or JSON path (default "auto")
34
+ -v, --version version for glow
35
+ -w, --width uint word-wrap at width
36
+
37
+ Use "glow [command] --help" for more information about a command.
@@ -0,0 +1,57 @@
1
+ # lib/aia/external/mods.rb
2
+
3
+ class AIA::External::Mods < AIA::External::Tool
4
+ def initialize
5
+ super
6
+ @role = :search
7
+ @desc = 'AI on the command-line'
8
+ @url = 'https://github.com/charmbracelet/mods'
9
+ end
10
+
11
+ def command(extra_options = [])
12
+ model = ENV['MODS_MODEL'] || 'gpt-4-1106-preview'
13
+ ai_default_opts = "-m #{model} --no-limit -f"
14
+ "#{name} #{ai_default_opts} #{extra_options.join(' ')}"
15
+ end
16
+ end
17
+
18
+ __END__
19
+
20
+ GPT on the command line. Built for pipelines.
21
+
22
+ Usage:
23
+ mods [OPTIONS] [PREFIX TERM]
24
+
25
+ Options:
26
+ -m, --model Default model (gpt-3.5-turbo, gpt-4, ggml-gpt4all-j...).
27
+ -a, --api OpenAI compatible REST API (openai, localai).
28
+ -x, --http-proxy HTTP proxy to use for API requests.
29
+ -f, --format Ask for the response to be formatted as markdown unless otherwise set.
30
+ -r, --raw Render output as raw text when connected to a TTY.
31
+ -P, --prompt Include the prompt from the arguments and stdin, truncate stdin to specified number of lines.
32
+ -p, --prompt-args Include the prompt from the arguments in the response.
33
+ -c, --continue Continue from the last response or a given save title.
34
+ -C, --continue-last Continue from the last response.
35
+ -l, --list Lists saved conversations.
36
+ -t, --title Saves the current conversation with the given title.
37
+ -d, --delete Deletes a saved conversation with the given title or ID.
38
+ -s, --show Show a saved conversation with the given title or ID.
39
+ -S, --show-last Show a the last saved conversation.
40
+ -q, --quiet Quiet mode (hide the spinner while loading and stderr messages for success).
41
+ -h, --help Show help and exit.
42
+ -v, --version Show version and exit.
43
+ --max-retries Maximum number of times to retry API calls.
44
+ --no-limit Turn off the client-side limit on the size of the input into the model.
45
+ --max-tokens Maximum number of tokens in response.
46
+ --temp Temperature (randomness) of results, from 0.0 to 2.0.
47
+ --topp TopP, an alternative to temperature that narrows response, from 0.0 to 1.0.
48
+ --fanciness Your desired level of fanciness.
49
+ --status-text Text to show while generating.
50
+ --no-cache Disables caching of the prompt/response.
51
+ --reset-settings Backup your old settings file and reset everything to the defaults.
52
+ --settings Open settings in your $EDITOR.
53
+ --dirs Print the directories in which mods store its data
54
+
55
+ Example:
56
+ # Editorialize your video files
57
+ ls ~/vids | mods -f "summarize each of these titles, group them by decade" | glow