summaryrefslogtreecommitdiff
path: root/localrepo/gptel-20240424.2306.tar
blob: a80a6757a1f4b3f29d3b6ce975ba29da3fc60cb2 (plain)
ofshex dumpascii
0000 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 00 00 00 00 00 00 00 00 00 00 00 00 gptel-20240424.2306/............
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000755.0000000.0000000.0000
0080 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 31 32 30 00 20 35 00 00 00 0000000.00000000000.012120..5...
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 67 65 6d 69 6e 69 gptel-20240424.2306/gptel-gemini
0220 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .el.............................
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
0280 30 30 31 35 31 33 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 30 33 32 00 20 30 00 00 00 0015137.00000000000.015032..0...
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
0320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0400 3b 3b 3b 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 2e 65 6c 20 2d 2d 2d 20 20 47 65 6d 69 6e 69 20 ;;;.gptel-gemini.el.---..Gemini.
0420 73 75 70 70 70 6f 72 74 20 66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d suppport.for.gptel..-*-.lexical-
0440 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43 binding:.t;.-*-..;;.Copyright.(C
0460 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b 20 ).2023..Karthik.Chikmagalur..;;.
0480 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 72 Author:.Karthik.Chikmagalur.<kar
04a0 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 0a 3b 3b 20 54 thikchikmagalur@gmail.com>..;;.T
04c0 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f his.program.is.free.software;.yo
04e0 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 u.can.redistribute.it.and/or.mod
0500 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 ify.;;.it.under.the.terms.of.the
0520 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 .GNU.General.Public.License.as.p
0540 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 ublished.by.;;.the.Free.Software
0560 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 .Foundation,.either.version.3.of
0580 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 .the.License,.or.;;.(at.your.opt
05a0 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 ion).any.later.version...;;.This
05c0 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 .program.is.distributed.in.the.h
05e0 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 ope.that.it.will.be.useful,.;;.b
0600 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 ut.WITHOUT.ANY.WARRANTY;.without
0620 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b .even.the.implied.warranty.of.;;
0640 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 .MERCHANTABILITY.or.FITNESS.FOR.
0660 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b A.PARTICULAR.PURPOSE...See.the.;
0680 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 ;.GNU.General.Public.License.for
06a0 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 .more.details...;;.You.should.ha
06c0 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 ve.received.a.copy.of.the.GNU.Ge
06e0 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 neral.Public.License.;;.along.wi
0700 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 th.this.program...If.not,.see.<h
0720 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a ttps://www.gnu.org/licenses/>...
0740 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 ;;;.Commentary:..;;.This.file.ad
0760 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 47 65 6d 69 6e 69 20 41 50 49 20 74 6f ds.support.for.the.Gemini.API.to
0780 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 .gptel..;;;.Code:.(require.'gpte
07a0 6c 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 72 65 71 75 69 72 l).(require.'cl-generic).(requir
07c0 65 20 27 6d 61 70 29 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 20 28 72 65 71 75 e.'map).(eval-when-compile.(requ
07e0 69 72 65 20 27 63 6c 2d 6c 69 62 29 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e ire.'cl-lib))..(declare-function
0800 20 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 65 20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79 .prop-match-value."text-property
0820 2d 73 65 61 72 63 68 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 -search").(declare-function.text
0840 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 22 74 65 78 74 2d -property-search-backward."text-
0860 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 property-search").(declare-funct
0880 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 29 0a 28 64 65 66 76 61 72 20 6a 73 ion.json-read."json").(defvar.js
08a0 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 3b 3b 3b 20 47 65 6d 69 6e 69 0a 28 63 6c 2d on-object-type)..;;;.Gemini.(cl-
08c0 64 65 66 73 74 72 75 63 74 0a 20 20 20 20 28 67 70 74 65 6c 2d 67 65 6d 69 6e 69 20 28 3a 63 6f defstruct.....(gptel-gemini.(:co
08e0 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 29 0a 20 20 nstructor.gptel--make-gemini)...
0900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 6e 69 6c 29 0a 20 20 ................(:copier.nil)...
0920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d ................(:include.gptel-
0940 62 61 63 6b 65 6e 64 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d backend)))..(cl-defmethod.gptel-
0960 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 curl--parse-stream.((_backend.gp
0980 74 65 6c 2d 67 65 6d 69 6e 69 29 20 5f 69 6e 66 6f 29 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e tel-gemini)._info)...(let*.((con
09a0 74 65 6e 74 2d 73 74 72 73 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 tent-strs)).....(condition-case.
09c0 6e 69 6c 0a 20 20 20 20 20 20 20 20 3b 3b 20 77 68 69 6c 65 2d 6c 65 74 20 69 73 20 45 6d 61 63 nil.........;;.while-let.is.Emac
09e0 73 20 32 39 2e 31 2b 20 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 70 72 6f s.29.1+.only.........(while.(pro
0a00 67 31 20 28 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 7b 22 20 6e 69 6c 20 74 29 0a 20 20 g1.(search-forward."{".nil.t)...
0a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 20 31 29 ...............(backward-char.1)
0a40 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 )...........(save-match-data....
0a60 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .........(when-let*.............
0a80 20 20 20 20 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 ....((response.(gptel--json-read
0aa0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 20 28 6d 61 70 2d 6e ))..................(text.(map-n
0ac0 65 73 74 65 64 2d 65 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ested-elt.......................
0ae0 20 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 63 61 6e 64 69 64 61 74 65 73 20 30 20 3a 63 6f 6e 74 ..response.'(:candidates.0.:cont
0b00 65 6e 74 20 3a 70 61 72 74 73 20 30 20 3a 74 65 78 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 ent.:parts.0.:text))))..........
0b20 20 20 20 20 20 28 70 75 73 68 20 74 65 78 74 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 .....(push.text.content-strs))))
0b40 0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 .......(error........(goto-char.
0b60 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 29 0a 20 20 20 20 28 61 70 70 6c (match-beginning.0)))).....(appl
0b80 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e 74 2d 73 74 72 y.#'concat.(nreverse.content-str
0ba0 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 s))))..(cl-defmethod.gptel--pars
0bc0 65 2d 72 65 73 70 6f 6e 73 65 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 e-response.((_backend.gptel-gemi
0be0 6e 69 29 20 72 65 73 70 6f 6e 73 65 20 5f 69 6e 66 6f 29 0a 20 20 28 6d 61 70 2d 6e 65 73 74 65 ni).response._info)...(map-neste
0c00 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 63 61 6e 64 69 64 61 74 65 73 20 30 20 3a d-elt.response.'(:candidates.0.:
0c20 63 6f 6e 74 65 6e 74 20 3a 70 61 72 74 73 20 30 20 3a 74 65 78 74 29 29 29 0a 0a 28 63 6c 2d 64 content.:parts.0.:text)))..(cl-d
0c40 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 28 5f efmethod.gptel--request-data.((_
0c60 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 20 70 72 6f 6d 70 74 73 29 0a 20 backend.gptel-gemini).prompts)..
0c80 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54 53 20 66 6f 72 20 73 65 6e 64 69 6e ."JSON.encode.PROMPTS.for.sendin
0ca0 67 20 74 6f 20 47 65 6d 69 6e 69 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 2d 70 g.to.Gemini."...(let.((prompts-p
0cc0 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a 63 6f 6e 74 65 6e 74 73 20 5b 2c 40 70 72 6f list..........`(:contents.[,@pro
0ce0 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 61 66 65 74 79 53 65 74 74 69 6e 67 73 mpts]............:safetySettings
0d00 20 5b 28 3a 63 61 74 65 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 48 41 52 41 .[(:category."HARM_CATEGORY_HARA
0d20 53 53 4d 45 4e 54 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 SSMENT".........................
0d40 20 20 20 20 20 3a 74 68 72 65 73 68 6f 6c 64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 0a 20 20 .....:threshold."BLOCK_NONE")...
0d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 61 74 65 ..........................(:cate
0d80 67 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 53 45 58 55 41 4c 4c 59 5f 45 58 50 gory."HARM_CATEGORY_SEXUALLY_EXP
0da0 4c 49 43 49 54 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 LICIT"..........................
0dc0 20 20 20 20 3a 74 68 72 65 73 68 6f 6c 64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 0a 20 20 20 ....:threshold."BLOCK_NONE")....
0de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 61 74 65 67 .........................(:categ
0e00 6f 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 44 41 4e 47 45 52 4f 55 53 5f 43 4f 4e ory."HARM_CATEGORY_DANGEROUS_CON
0e20 54 45 4e 54 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 TENT"...........................
0e40 20 20 20 3a 74 68 72 65 73 68 6f 6c 64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 0a 20 20 20 20 ...:threshold."BLOCK_NONE").....
0e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 61 74 65 67 6f ........................(:catego
0e80 72 79 20 22 48 41 52 4d 5f 43 41 54 45 47 4f 52 59 5f 48 41 54 45 5f 53 50 45 45 43 48 22 0a 20 ry."HARM_CATEGORY_HATE_SPEECH"..
0ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 68 72 ............................:thr
0ec0 65 73 68 6f 6c 64 20 22 42 4c 4f 43 4b 5f 4e 4f 4e 45 22 29 5d 29 29 0a 20 20 20 20 20 20 20 20 eshold."BLOCK_NONE")])).........
0ee0 70 61 72 61 6d 73 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 params).....(when.gptel-temperat
0f00 75 72 65 0a 20 20 20 20 20 20 28 73 65 74 71 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 ure.......(setq.params..........
0f20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 ...(plist-put.params............
0f40 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 28 6d 61 78 20 67 70 ............:temperature.(max.gp
0f60 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 31 2e 30 29 29 29 29 0a 20 20 20 20 28 77 68 65 tel-temperature.1.0)))).....(whe
0f80 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 28 73 65 74 71 20 70 n.gptel-max-tokens.......(setq.p
0fa0 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 61 72 arams.............(plist-put.par
0fc0 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78 4f ams........................:maxO
0fe0 75 74 70 75 74 54 6f 6b 65 6e 73 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 29 0a utputTokens.gptel-max-tokens))).
1000 20 20 20 20 28 77 68 65 6e 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 ....(when.params.......(plist-pu
1020 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.prompts-plist.................
1040 20 3a 67 65 6e 65 72 61 74 69 6f 6e 43 6f 6e 66 69 67 20 70 61 72 61 6d 73 29 29 0a 20 20 20 20 .:generationConfig.params)).....
1060 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 prompts-plist))..(cl-defmethod.g
1080 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 ptel--parse-buffer.((_backend.gp
10a0 74 65 6c 2d 67 65 6d 69 6e 69 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72 69 65 tel-gemini).&optional.max-entrie
10c0 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 29 20 28 70 72 6f 70 29 29 0a 20 20 20 s)...(let.((prompts).(prop))....
10e0 20 28 77 68 69 6c 65 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6e 6f .(while.(and.............(or.(no
1100 74 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 t.max-entries).(>=.max-entries.0
1120 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 6f 70 20 28 74 65 78 74 2d )).............(setq.prop.(text-
1140 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 property-search-backward........
1160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 .................'gptel.'respons
1180 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 e.........................(when.
11a0 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d (get-char-property.(max.(point-m
11c0 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in).(1-.(point)))...............
11e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1200 20 20 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...'gptel)......................
1220 20 20 20 20 20 74 29 29 29 29 0a 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f .....t)))).......(push.(list.:ro
1240 6c 65 20 28 69 66 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 65 20 70 72 6f 70 29 20 22 le.(if.(prop-match-value.prop)."
1260 6d 6f 64 65 6c 22 20 22 75 73 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 model"."user")..................
1280 20 3a 70 61 72 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 .:parts...................(list.
12a0 3a 74 65 78 74 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 :text.(string-trim..............
12c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 ..................(buffer-substr
12e0 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 62 65 ing-no-properties.(prop-match-be
1300 67 69 6e 6e 69 6e 67 20 70 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ginning.prop)...................
1320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1340 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 72 6f .............(prop-match-end.pro
1360 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p)).............................
1380 20 20 20 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 ...(format."[\t\r\n.]*\\(?:%s\\)
13a0 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ?[\t\r\n.]*"....................
13c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 ....................(regexp-quot
13e0 65 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 e.(gptel-prompt-prefix-string)))
1400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1420 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c (format."[\t\r\n.]*\\(?:%s\\)?[\
1440 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t\r\n.]*".......................
1460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 .................(regexp-quote.(
1480 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 gptel-response-prefix-string))))
14a0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 28 61 )).............prompts).......(a
14c0 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 nd.max-entries.(cl-decf.max-entr
14e0 69 65 73 29 29 29 0a 20 20 20 20 28 63 6c 2d 63 61 6c 6c 66 20 28 6c 61 6d 62 64 61 20 28 6d 73 ies))).....(cl-callf.(lambda.(ms
1500 67 29 20 28 63 6f 6e 63 61 74 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 g).(concat.gptel--system-message
1520 20 22 5c 6e 5c 6e 22 20 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 28 74 68 72 65 61 64 2d 66 69 ."\n\n".msg)).........(thread-fi
1540 72 73 74 20 28 63 61 72 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rst.(car.prompts)...............
1560 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 3a 70 61 72 74 73 29 0a 20 20 20 20 20 ........(plist-get.:parts)......
1580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 3a 74 65 78 .................(plist-get.:tex
15a0 74 29 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f t))).....prompts))..;;;###autolo
15c0 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 0a 20 ad.(cl-defun.gptel-make-gemini..
15e0 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 68 65 61 64 65 72 20 6b ...(name.&key.curl-args.header.k
1600 65 79 20 28 73 74 72 65 61 6d 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 ey.(stream.nil)...........(host.
1620 22 67 65 6e 65 72 61 74 69 76 65 6c 61 6e 67 75 61 67 65 2e 67 6f 6f 67 6c 65 61 70 69 73 2e 63 "generativelanguage.googleapis.c
1640 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 om")...........(protocol."https"
1660 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 27 28 22 67 65 6d 69 6e 69 2d 70 72 )...........(models.'("gemini-pr
1680 6f 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 67 65 6d 69 6e 69 2d 31 o"....................."gemini-1
16a0 2e 35 2d 70 72 6f 2d 6c 61 74 65 73 74 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 .5-pro-latest"))...........(endp
16c0 6f 69 6e 74 20 22 2f 76 31 62 65 74 61 2f 6d 6f 64 65 6c 73 22 29 29 0a 0a 20 20 22 52 65 67 69 oint."/v1beta/models"))...."Regi
16e0 73 74 65 72 20 61 20 47 65 6d 69 6e 69 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 ster.a.Gemini.backend.for.gptel.
1700 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a with.NAME...Keyword.arguments:..
1720 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f CURL-ARGS.(optional).is.a.list.o
1740 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f f.additional.Curl.arguments...HO
1760 53 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 64 ST.(optional).is.the.API.host,.d
1780 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 67 65 6e 65 72 61 74 69 76 65 6c 61 6e 67 75 61 67 65 2e efaults.to.\"generativelanguage.
17a0 67 6f 6f 67 6c 65 61 70 69 73 2e 63 6f 6d 5c 22 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c googleapis.com\"...MODELS.is.a.l
17c0 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2e 0a 0a 53 ist.of.available.model.names...S
17e0 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 65 6e 61 62 6c 65 20 73 74 72 TREAM.is.a.boolean.to.enable.str
1800 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 eaming.responses,.defaults.to.fa
1820 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 lse...PROTOCOL.(optional).specif
1840 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 5c 22 68 74 74 70 73 5c 22 20 62 79 20 64 ies.the.protocol,.\"https\".by.d
1860 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 efault...ENDPOINT.(optional).is.
1880 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 the.API.endpoint.for.completions
18a0 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31 62 65 74 61 2f 6d 6f 64 65 6c 73 5c 22 ,.defaults.to.\"/v1beta/models\"
18c0 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 ...HEADER.(optional).is.for.addi
18e0 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 tional.headers.to.send.with.each
1900 0a 72 65 71 75 65 73 74 2e 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 .request..It.should.be.an.alist.
1920 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 or.a.function.that.retuns.an.ali
1940 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c st,.like:.((\"Content-Type\"...\
1960 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 "application/json\"))..KEY.(opti
1980 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 onal).is.a.variable.whose.value.
19a0 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 is.the.API.key,.or.function.that
19c0 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 .returns.the.key."...(declare.(i
19e0 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 ndent.1))...(let.((backend.(gpte
1a00 6c 2d 2d 6d 61 6b 65 2d 67 65 6d 69 6e 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l--make-gemini..................
1a20 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 .:curl-args.curl-args...........
1a40 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ........:name.name..............
1a60 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....:host.host.................
1a80 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..:header.header................
1aa0 20 20 20 3a 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...:models.models...............
1ac0 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 ....:protocol.protocol..........
1ae0 20 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 .........:endpoint.endpoint.....
1b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 ..............:stream.stream....
1b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 ...............:key.key.........
1b40 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 ..........:url.(lambda.().......
1b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 65 74 68 6f 64 ...................(let.((method
1b80 20 28 69 66 20 28 61 6e 64 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(if.(and.stream................
1ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1bc0 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .gptel-stream)..................
1be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 74 72 65 61 .........................."strea
1c00 6d 47 65 6e 65 72 61 74 65 43 6f 6e 74 65 6e 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mGenerateContent"...............
1c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 67 65 6e 65 ..........................."gene
1c40 72 61 74 65 43 6f 6e 74 65 6e 74 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rateContent"))).................
1c60 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 3a 2f 2f 25 73 25 73 2f 25 73 ...........(format."%s://%s%s/%s
1c80 3a 25 73 3f 6b 65 79 3d 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :%s?key=%s".....................
1ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 ...............protocol.........
1cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 0a ...........................host.
1ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1d00 20 20 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...endpoint.....................
1d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 ...............gptel-model......
1d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 ..............................me
1d60 74 68 6f 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 thod............................
1d80 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 29 29 ........(gptel--get-api-key)))))
1da0 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 )).....(prog1.backend.......(set
1dc0 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 f.(alist-get.name.gptel--known-b
1de0 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e ackends........................n
1e00 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b il.nil.#'equal).............back
1e20 65 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 end))))..(provide.'gptel-gemini)
1e40 0a 3b 3b 3b 20 67 70 74 65 6c 2d 67 65 6d 69 6e 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 .;;;.gptel-gemini.el.ends.here..
1e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2000 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 6f 70 65 6e 61 69 gptel-20240424.2306/gptel-openai
2020 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .el.............................
2040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
2080 30 30 32 33 30 31 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 30 32 35 00 20 30 00 00 00 0023013.00000000000.015025..0...
20a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
20e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
2120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
2140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2200 3b 3b 3b 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2e 65 6c 20 2d 2d 2d 20 20 43 68 61 74 47 50 54 ;;;.gptel-openai.el.---..ChatGPT
2220 20 73 75 70 70 70 6f 72 74 20 66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c .suppport.for.gptel..-*-.lexical
2240 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 -binding:.t;.-*-..;;.Copyright.(
2260 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2023..Karthik.Chikmagalur..;;
2280 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 .Author:.Karthik.Chikmagalur.<ka
22a0 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 0a 3b 3b 20 rthikchikmagalur@gmail.com>..;;.
22c0 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 This.program.is.free.software;.y
22e0 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f ou.can.redistribute.it.and/or.mo
2300 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 dify.;;.it.under.the.terms.of.th
2320 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 e.GNU.General.Public.License.as.
2340 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 published.by.;;.the.Free.Softwar
2360 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f e.Foundation,.either.version.3.o
2380 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 f.the.License,.or.;;.(at.your.op
23a0 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 tion).any.later.version...;;.Thi
23c0 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 s.program.is.distributed.in.the.
23e0 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 hope.that.it.will.be.useful,.;;.
2400 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 but.WITHOUT.ANY.WARRANTY;.withou
2420 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b t.even.the.implied.warranty.of.;
2440 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 ;.MERCHANTABILITY.or.FITNESS.FOR
2460 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a .A.PARTICULAR.PURPOSE...See.the.
2480 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f ;;.GNU.General.Public.License.fo
24a0 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 r.more.details...;;.You.should.h
24c0 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 ave.received.a.copy.of.the.GNU.G
24e0 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 eneral.Public.License.;;.along.w
2500 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c ith.this.program...If.not,.see.<
2520 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a https://www.gnu.org/licenses/>..
2540 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 .;;;.Commentary:..;;.This.file.a
2560 64 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 43 68 61 74 47 50 54 20 41 50 49 20 dds.support.for.the.ChatGPT.API.
2580 74 6f 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 63 6c to.gptel..;;;.Code:.(require.'cl
25a0 2d 67 65 6e 65 72 69 63 29 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 -generic).(eval-when-compile...(
25c0 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 70 29 require.'cl-lib)).(require.'map)
25e0 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 28 64 65 66 76 61 72 20 67 ..(defvar.gptel-model).(defvar.g
2600 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 75 73 65 2d 63 ptel-stream).(defvar.gptel-use-c
2620 75 72 6c 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 28 64 65 66 url).(defvar.gptel-backend).(def
2640 76 61 72 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 0a 28 64 65 66 76 61 72 20 67 var.gptel-temperature).(defvar.g
2660 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d ptel-max-tokens).(defvar.gptel--
2680 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6b system-message).(defvar.gptel--k
26a0 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 29 0a 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 nown-backends).(defvar.json-obje
26c0 63 74 2d 74 79 70 65 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 ct-type)..(declare-function.gpte
26e0 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 l--get-api-key."gptel").(declare
2700 2d 66 75 6e 63 74 69 6f 6e 20 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 65 20 22 74 65 78 74 -function.prop-match-value."text
2720 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 -property-search").(declare-func
2740 74 69 6f 6e 20 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 tion.text-property-search-backwa
2760 72 64 20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22 29 0a 28 64 65 63 6c rd."text-property-search").(decl
2780 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 29 0a 28 are-function.json-read."json").(
27a0 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 declare-function.gptel-prompt-pr
27c0 65 66 69 78 2d 73 74 72 69 6e 67 20 22 67 70 74 65 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 efix-string."gptel").(declare-fu
27e0 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 nction.gptel-response-prefix-str
2800 69 6e 67 20 22 67 70 74 65 6c 22 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 6a ing."gptel")..(defmacro.gptel--j
2820 73 6f 6e 2d 72 65 61 64 20 28 29 0a 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6a 73 6f 6e son-read.()...(if.(fboundp.'json
2840 2d 70 61 72 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 60 28 6a 73 6f 6e 2d 70 61 72 73 -parse-buffer).......`(json-pars
2860 65 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 3a 6f 62 6a 65 63 74 2d 74 79 70 65 20 27 70 e-buffer.........:object-type.'p
2880 6c 69 73 74 0a 20 20 20 20 20 20 20 20 3a 6e 75 6c 6c 2d 6f 62 6a 65 63 74 20 6e 69 6c 0a 20 20 list.........:null-object.nil...
28a0 20 20 20 20 20 20 3a 66 61 6c 73 65 2d 6f 62 6a 65 63 74 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 ......:false-object.:json-false)
28c0 0a 20 20 20 20 28 72 65 71 75 69 72 65 20 27 6a 73 6f 6e 29 0a 20 20 20 20 28 64 65 66 76 61 72 .....(require.'json).....(defvar
28e0 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 20 20 20 20 28 64 65 63 6c 61 72 65 2d .json-object-type).....(declare-
2900 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 20 28 29 29 0a 20 20 function.json-read."json".())...
2920 20 20 60 28 6c 65 74 20 28 28 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 20 27 70 6c 69 73 ..`(let.((json-object-type.'plis
2940 74 29 29 0a 20 20 20 20 20 20 28 6a 73 6f 6e 2d 72 65 61 64 29 29 29 29 0a 0a 28 64 65 66 6d 61 t)).......(json-read))))..(defma
2960 63 72 6f 20 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 6f 62 6a 65 63 74 29 0a cro.gptel--json-encode.(object).
2980 20 20 28 69 66 20 28 66 62 6f 75 6e 64 70 20 27 6a 73 6f 6e 2d 73 65 72 69 61 6c 69 7a 65 29 0a ..(if.(fboundp.'json-serialize).
29a0 20 20 20 20 20 20 60 28 6a 73 6f 6e 2d 73 65 72 69 61 6c 69 7a 65 20 2c 6f 62 6a 65 63 74 0a 20 ......`(json-serialize.,object..
29c0 20 20 20 20 20 20 20 3a 6e 75 6c 6c 2d 6f 62 6a 65 63 74 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 .......:null-object.nil.........
29e0 3a 66 61 6c 73 65 2d 6f 62 6a 65 63 74 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 28 :false-object.:json-false).....(
2a00 72 65 71 75 69 72 65 20 27 6a 73 6f 6e 29 0a 20 20 20 20 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d require.'json).....(defvar.json-
2a20 66 61 6c 73 65 29 0a 20 20 20 20 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f false).....(declare-function.jso
2a40 6e 2d 65 6e 63 6f 64 65 20 22 6a 73 6f 6e 22 20 28 6f 62 6a 65 63 74 29 29 0a 20 20 20 20 60 28 n-encode."json".(object)).....`(
2a60 6c 65 74 20 28 28 6a 73 6f 6e 2d 66 61 6c 73 65 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 0a 20 let.((json-false.:json-false))..
2a80 20 20 20 20 20 28 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 2c 6f 62 6a 65 63 74 29 29 29 29 0a 0a 3b .....(json-encode.,object))))..;
2aa0 3b 3b 20 43 6f 6d 6d 6f 6e 20 62 61 63 6b 65 6e 64 20 73 74 72 75 63 74 20 66 6f 72 20 4c 4c 4d ;;.Common.backend.struct.for.LLM
2ac0 20 73 75 70 70 6f 72 74 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 0a 20 20 20 20 28 67 70 74 65 .support.(cl-defstruct.....(gpte
2ae0 6c 2d 62 61 63 6b 65 6e 64 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d l-backend.(:constructor.gptel--m
2b00 61 6b 65 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ake-backend)....................
2b20 28 3a 63 6f 70 69 65 72 20 67 70 74 65 6c 2d 2d 63 6f 70 79 2d 62 61 63 6b 65 6e 64 29 29 0a 20 (:copier.gptel--copy-backend))..
2b40 20 6e 61 6d 65 20 68 6f 73 74 20 68 65 61 64 65 72 20 70 72 6f 74 6f 63 6f 6c 20 73 74 72 65 61 .name.host.header.protocol.strea
2b60 6d 0a 20 20 65 6e 64 70 6f 69 6e 74 20 6b 65 79 20 6d 6f 64 65 6c 73 20 75 72 6c 20 63 75 72 6c m...endpoint.key.models.url.curl
2b80 2d 61 72 67 73 29 0a 0a 3b 3b 3b 20 4f 70 65 6e 41 49 20 28 43 68 61 74 47 50 54 29 0a 28 63 6c -args)..;;;.OpenAI.(ChatGPT).(cl
2ba0 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 6f 70 65 6e 61 69 20 28 3a 63 6f 6e 73 74 -defstruct.(gptel-openai.(:const
2bc0 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 29 0a 20 20 20 20 20 ructor.gptel--make-openai)......
2be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 .......................(:copier.
2c00 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nil)............................
2c20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 0a 28 63 6c .(:include.gptel-backend)))..(cl
2c40 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 -defmethod.gptel-curl--parse-str
2c60 65 61 6d 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 5f 69 6e eam.((_backend.gptel-openai)._in
2c80 66 6f 29 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 0a 20 20 20 fo)...(let*.((content-strs))....
2ca0 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 28 77 68 .(condition-case.nil.........(wh
2cc0 69 6c 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5e 64 61 74 61 3a 22 20 ile.(re-search-forward."^data:".
2ce0 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 nil.t)...........(save-match-dat
2d00 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6c 6f 6f 6b 69 6e 67 2d 61 a.............(unless.(looking-a
2d20 74 20 22 20 2a 5c 5c 5b 44 4f 4e 45 5c 5c 5d 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.".*\\[DONE\\]")...............
2d40 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 73 70 6f 6e 73 65 20 28 67 70 74 65 6c 2d 2d 6a 73 (when-let*.((response.(gptel--js
2d60 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 on-read)).......................
2d80 20 20 20 20 28 64 65 6c 74 61 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 0a 20 20 20 20 20 ....(delta.(map-nested-elt......
2da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 .............................res
2dc0 70 6f 6e 73 65 20 27 28 3a 63 68 6f 69 63 65 73 20 30 20 3a 64 65 6c 74 61 29 29 29 0a 20 20 20 ponse.'(:choices.0.:delta)))....
2de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 20 .......................(content.
2e00 28 70 6c 69 73 74 2d 67 65 74 20 64 65 6c 74 61 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 20 20 20 (plist-get.delta.:content)))....
2e20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 6f 6e 74 65 6e 74 20 63 6f 6e 74 65 .............(push.content.conte
2e40 6e 74 2d 73 74 72 73 29 29 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 nt-strs))))).......(error.......
2e60 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 .(goto-char.(match-beginning.0))
2e80 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 73 65 )).....(apply.#'concat.(nreverse
2ea0 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 .content-strs))))..(cl-defmethod
2ec0 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 28 5f 62 61 63 6b 65 6e .gptel--parse-response.((_backen
2ee0 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 72 65 73 70 6f 6e 73 65 20 5f 69 6e 66 6f 29 0a d.gptel-openai).response._info).
2f00 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 63 68 ..(map-nested-elt.response.'(:ch
2f20 6f 69 63 65 73 20 30 20 3a 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 0a 28 63 oices.0.:message.:content)))..(c
2f40 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 l-defmethod.gptel--request-data.
2f60 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 70 65 6e 61 69 29 20 70 72 6f 6d 70 74 73 ((_backend.gptel-openai).prompts
2f80 29 0a 20 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54 53 20 66 6f 72 20 73 65 6e )..."JSON.encode.PROMPTS.for.sen
2fa0 64 69 6e 67 20 74 6f 20 43 68 61 74 47 50 54 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 ding.to.ChatGPT."...(let.((promp
2fc0 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a 6d 6f 64 65 6c 20 2c 67 70 74 65 ts-plist..........`(:model.,gpte
2fe0 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 73 73 61 67 65 73 20 5b 2c 40 l-model............:messages.[,@
3000 70 72 6f 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 prompts]............:stream.,(or
3020 20 28 61 6e 64 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 .(and.gptel-stream.gptel-use-cur
3040 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 l..........................(gpte
3060 6c 2d 62 61 63 6b 65 6e 64 2d 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 l-backend-stream.gptel-backend))
3080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6a 73 6f 6e 2d 66 61 6c 73 ......................:json-fals
30a0 65 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 e)))).....(when.gptel-temperatur
30c0 65 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 e.......(plist-put.prompts-plist
30e0 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 .:temperature.gptel-temperature)
3100 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 20 ).....(when.gptel-max-tokens....
3120 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 6d 61 78 ...(plist-put.prompts-plist.:max
3140 5f 74 6f 6b 65 6e 73 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 0a 20 20 20 20 70 _tokens.gptel-max-tokens)).....p
3160 72 6f 6d 70 74 73 2d 70 6c 69 73 74 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 rompts-plist))..(cl-defmethod.gp
3180 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 tel--parse-buffer.((_backend.gpt
31a0 65 6c 2d 6f 70 65 6e 61 69 29 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72 69 65 73 el-openai).&optional.max-entries
31c0 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 29 20 28 70 72 6f 70 29 29 0a 20 20 20 20 )...(let.((prompts).(prop)).....
31e0 28 77 68 69 6c 65 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6e 6f 74 (while.(and.............(or.(not
3200 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 29 .max-entries).(>=.max-entries.0)
3220 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 6f 70 20 28 74 65 78 74 2d 70 ).............(setq.prop.(text-p
3240 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 roperty-search-backward.........
3260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 ................'gptel.'response
3280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 .........................(when.(
32a0 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 get-char-property.(max.(point-mi
32c0 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n).(1-.(point)))................
32e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3300 20 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..'gptel).......................
3320 20 20 20 20 74 29 29 29 29 0a 20 20 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c ....t)))).......(push.(list.:rol
3340 65 20 28 69 66 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 65 20 70 72 6f 70 29 20 22 61 e.(if.(prop-match-value.prop)."a
3360 73 73 69 73 74 61 6e 74 22 20 22 75 73 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ssistant"."user")...............
3380 20 20 20 20 3a 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ....:content...................(
33a0 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 string-trim....................(
33c0 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 buffer-substring-no-properties.(
33e0 70 72 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 70 72 6f 70 29 0a 20 20 20 20 20 prop-match-beginning.prop)......
3400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 72 ..............(prop-match-end.pr
3440 6f 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 op))....................(format.
3460 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a "[\t\r\n.]*\\(?:%s\\)?[\t\r\n.]*
3480 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 "............................(re
34a0 67 65 78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d gexp-quote.(gptel-prompt-prefix-
34c0 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f string)))....................(fo
34e0 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 rmat."[\t\r\n.]*\\(?:%s\\)?[\t\r
3500 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \n.]*"..........................
3520 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d ..(regexp-quote.(gptel-response-
3540 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 prefix-string))))).............p
3560 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 28 61 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 rompts).......(and.max-entries.(
3580 63 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 0a 20 20 20 20 28 63 6f 6e 73 cl-decf.max-entries))).....(cons
35a0 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 22 73 79 73 74 65 6d 22 0a 20 20 20 20 20 20 20 20 20 20 .(list.:role."system"...........
35c0 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 ......:content.gptel--system-mes
35e0 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 29 0a 0a 3b 3b 3b 23 sage)...........prompts)))..;;;#
3600 23 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d ##autoload.(cl-defun.gptel-make-
3620 6f 70 65 6e 61 69 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 openai.....(name.&key.curl-args.
3640 6d 6f 64 65 6c 73 20 73 74 72 65 61 6d 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 28 68 65 61 models.stream.key...........(hea
3660 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 65 6e 2d der............(lambda.().(when-
3680 6c 65 74 20 28 6b 65 79 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 0a 20 let.(key.(gptel--get-api-key))..
36a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 22 41 75 74 68 6f 72 69 7a 61 74 ..................`(("Authorizat
36c0 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 65 61 72 65 72 20 22 20 6b 65 79 29 29 29 ion"...,(concat."Bearer.".key)))
36e0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61 70 69 2e 6f 70 65 6e 61 69 2e )))...........(host."api.openai.
3700 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 com")...........(protocol."https
3720 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 76 31 2f 63 68 61 74 ")...........(endpoint."/v1/chat
3740 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 4f /completions"))..."Register.an.O
3760 70 65 6e 41 49 20 41 50 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 62 61 63 6b 65 6e 64 20 66 6f 72 penAI.API-compatible.backend.for
3780 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d .gptel.with.NAME...Keyword.argum
37a0 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 ents:..CURL-ARGS.(optional).is.a
37c0 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e .list.of.additional.Curl.argumen
37e0 74 73 2e 0a 0a 48 4f 53 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 ts...HOST.(optional).is.the.API.
3800 68 6f 73 74 2c 20 74 79 70 69 63 61 6c 6c 79 20 5c 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d host,.typically.\"api.openai.com
3820 5c 22 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 \"...MODELS.is.a.list.of.availab
3840 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f le.model.names...STREAM.is.a.boo
3860 6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 lean.to.toggle.streaming.respons
3880 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c es,.defaults.to.false...PROTOCOL
38a0 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 .(optional).specifies.the.protoc
38c0 6f 6c 2c 20 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 ol,.https.by.default...ENDPOINT.
38e0 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 (optional).is.the.API.endpoint.f
3900 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 or.completions,.defaults.to.\"/v
3920 31 2f 63 68 61 74 2f 63 6f 6d 70 6c 65 74 69 6f 6e 73 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 1/chat/completions\"...HEADER.(o
3940 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 ptional).is.for.additional.heade
3960 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 49 74 rs.to.send.with.each.request..It
3980 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f .should.be.an.alist.or.a.functio
39a0 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 n.that.retuns.an.alist,.like:.((
39c0 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e \"Content-Type\"...\"application
39e0 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 /json\"))..KEY.(optional).is.a.v
3a00 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b ariable.whose.value.is.the.API.k
3a20 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 ey,.or.function.that.returns.the
3a40 20 6b 65 79 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 .key."...(declare.(indent.1))...
3a60 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e (let.((backend.(gptel--make-open
3a80 61 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 ai...................:curl-args.
3aa0 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d curl-args...................:nam
3ac0 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 e.name...................:host.h
3ae0 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 ost...................:header.he
3b00 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a ader...................:key.key.
3b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 ..................:models.models
3b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f ...................:protocol.pro
3b60 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e tocol...................:endpoin
3b80 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 t.endpoint...................:st
3ba0 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 ream.stream...................:u
3bc0 72 6c 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rl.(if.protocol.................
3be0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f ...........(concat.protocol."://
3c00 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ".host.endpoint)................
3c20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 ..........(concat.host.endpoint)
3c40 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 )))).....(prog1.backend.......(s
3c60 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e etf.(alist-get.name.gptel--known
3c80 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -backends.......................
3ca0 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .nil.nil.#'equal)...............
3cc0 20 20 20 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 3b 3b 3b 20 41 7a 75 72 65 0a 3b 3b 3b 23 23 ....backend))))..;;;.Azure.;;;##
3ce0 23 61 75 74 6f 6c 6f 61 64 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 #autoload.(cl-defun.gptel-make-a
3d00 7a 75 72 65 0a 20 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 68 6f zure.....(name.&key.curl-args.ho
3d20 73 74 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29 0a st...........(protocol."https").
3d40 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 29 20 60 28 28 ..........(header.(lambda.().`((
3d60 22 61 70 69 2d 6b 65 79 22 20 2e 20 2c 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 "api-key"...,(gptel--get-api-key
3d80 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6b 65 79 20 27 67 70 74 65 6c 2d 61 70 69 2d )))))...........(key.'gptel-api-
3da0 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 73 20 73 74 72 65 61 6d 20 65 6e 64 key)...........models.stream.end
3dc0 70 6f 69 6e 74 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 41 7a 75 72 65 20 62 61 63 6b point)..."Register.an.Azure.back
3de0 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 end.for.gptel.with.NAME...Keywor
3e00 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 d.arguments:..CURL-ARGS.(optiona
3e20 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 l).is.a.list.of.additional.Curl.
3e40 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 arguments...HOST.is.the.API.host
3e60 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 ...MODELS.is.a.list.of.available
3e80 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 .model.names...STREAM.is.a.boole
3ea0 61 6e 20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 an.to.toggle.streaming.responses
3ec0 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 ,.defaults.to.false...PROTOCOL.(
3ee0 6f 70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c optional).specifies.the.protocol
3f00 2c 20 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 69 73 ,.https.by.default...ENDPOINT.is
3f20 20 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e .the.API.endpoint.for.completion
3f40 73 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 s...HEADER.(optional).is.for.add
3f60 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 itional.headers.to.send.with.eac
3f80 68 0a 72 65 71 75 65 73 74 2e 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 h.request..It.should.be.an.alist
3fa0 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c .or.a.function.that.retuns.an.al
3fc0 69 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 ist,.like:.((\"Content-Type\"...
3fe0 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 \"application/json\"))..KEY.(opt
4000 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 ional).is.a.variable.whose.value
4020 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 .is.the.API.key,.or.function.tha
4040 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 45 78 61 6d 70 6c 65 3a 0a 2d 2d 2d t.returns.the.key...Example:.---
4060 2d 2d 2d 2d 0a 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a 75 72 65 0a 20 5c 22 41 7a 75 72 65 ----..(gptel-make-azure..\"Azure
4080 2d 31 5c 22 0a 20 3a 70 72 6f 74 6f 63 6f 6c 20 5c 22 68 74 74 70 73 5c 22 0a 20 3a 68 6f 73 74 -1\"..:protocol.\"https\"..:host
40a0 20 5c 22 52 45 53 4f 55 52 43 45 5f 4e 41 4d 45 2e 6f 70 65 6e 61 69 2e 61 7a 75 72 65 2e 63 6f .\"RESOURCE_NAME.openai.azure.co
40c0 6d 5c 22 0a 20 3a 65 6e 64 70 6f 69 6e 74 0a 20 5c 22 2f 6f 70 65 6e 61 69 2f 64 65 70 6c 6f 79 m\"..:endpoint..\"/openai/deploy
40e0 6d 65 6e 74 73 2f 44 45 50 4c 4f 59 4d 45 4e 54 5f 4e 41 4d 45 2f 63 6f 6d 70 6c 65 74 69 6f 6e ments/DEPLOYMENT_NAME/completion
4100 73 3f 61 70 69 2d 76 65 72 73 69 6f 6e 3d 32 30 32 33 2d 30 35 2d 31 35 5c 22 0a 20 3a 73 74 72 s?api-version=2023-05-15\"..:str
4120 65 61 6d 20 74 0a 20 3a 6d 6f 64 65 6c 73 20 5c 5c 3d 27 28 5c 22 67 70 74 2d 33 2e 35 2d 74 75 eam.t..:models.\\='(\"gpt-3.5-tu
4140 72 62 6f 5c 22 20 5c 22 67 70 74 2d 34 5c 22 29 29 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 rbo\".\"gpt-4\"))"...(declare.(i
4160 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 ndent.1))...(let.((backend.(gpte
4180 6c 2d 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l--make-openai..................
41a0 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 .:curl-args.curl-args...........
41c0 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ........:name.name..............
41e0 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....:host.host.................
4200 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..:header.header................
4220 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d ...:key.key...................:m
4240 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a odels.models...................:
4260 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 protocol.protocol...............
4280 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 ....:endpoint.endpoint..........
42a0 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 .........:stream.stream.........
42c0 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 ..........:url.(if.protocol.....
42e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 .......................(concat.p
4300 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 rotocol."://".host.endpoint)....
4320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f ......................(concat.ho
4340 73 74 20 65 6e 64 70 6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b st.endpoint))))).....(prog1.back
4360 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 end.......(setf.(alist-get.name.
4380 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 gptel--known-backends...........
43a0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 .............nil.nil.#'equal)...
43c0 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 3b 3b 20 47 50 54 34 41 6c ..........backend))))..;;.GPT4Al
43e0 6c 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 61 6c 69 61 73 20 27 67 70 74 65 l.;;;###autoload.(defalias.'gpte
4400 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 20 27 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 l-make-gpt4all.'gptel-make-opena
4420 69 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 47 50 54 34 41 6c 6c 20 62 61 63 6b 65 6e 64 20 i..."Register.a.GPT4All.backend.
4440 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 for.gptel.with.NAME...Keyword.ar
4460 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 guments:..CURL-ARGS.(optional).i
4480 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c 20 61 72 67 75 s.a.list.of.additional.Curl.argu
44a0 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 77 68 65 72 65 20 47 50 54 34 41 6c 6c 20 72 75 ments...HOST.is.where.GPT4All.ru
44c0 6e 73 20 28 77 69 74 68 20 70 6f 72 74 29 2c 20 74 79 70 69 63 61 6c 6c 79 20 6c 6f 63 61 6c 68 ns.(with.port),.typically.localh
44e0 6f 73 74 3a 38 34 39 31 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 76 ost:8491..MODELS.is.a.list.of.av
4500 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 ailable.model.names...STREAM.is.
4520 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 a.boolean.to.toggle.streaming.re
4540 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f sponses,.defaults.to.false...PRO
4560 54 4f 43 4f 4c 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 TOCOL.specifies.the.protocol,.ht
4580 74 70 73 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 74 69 6f tps.by.default...ENDPOINT.(optio
45a0 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d nal).is.the.API.endpoint.for.com
45c0 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f 76 31 2f pletions,.defaults.to.\"/api/v1/
45e0 63 6f 6d 70 6c 65 74 69 6f 6e 73 5c 22 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 completions\"..HEADER.(optional)
4600 20 69 73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 .is.for.additional.headers.to.se
4620 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 49 74 20 73 68 6f 75 6c 64 20 nd.with.each.request..It.should.
4640 62 65 20 61 6e 20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 be.an.alist.or.a.function.that.r
4660 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e 74 65 6e etuns.an.alist,.like:.((\"Conten
4680 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 t-Type\"...\"application/json\")
46a0 29 0a 0a 4b 45 59 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 )..KEY.(optional).is.a.variable.
46c0 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 whose.value.is.the.API.key,.or.f
46e0 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 54 68 unction.that.returns.the.key..Th
4700 69 73 20 69 73 20 74 79 70 69 63 61 6c 6c 79 20 6e 6f 74 20 72 65 71 75 69 72 65 64 20 66 6f 72 is.is.typically.not.required.for
4720 0a 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 6c 69 6b 65 20 47 50 54 34 41 6c 6c 2e 0a 0a 45 78 61 .local.models.like.GPT4All...Exa
4740 6d 70 6c 65 3a 0a 2d 2d 2d 2d 2d 2d 2d 0a 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 mple:.-------..(gptel-make-gpt4a
4760 6c 6c 0a 20 5c 22 47 50 54 34 41 6c 6c 5c 22 0a 20 3a 70 72 6f 74 6f 63 6f 6c 20 5c 22 68 74 74 ll..\"GPT4All\"..:protocol.\"htt
4780 70 5c 22 0a 20 3a 68 6f 73 74 20 5c 22 6c 6f 63 61 6c 68 6f 73 74 3a 34 38 39 31 5c 22 0a 20 3a p\"..:host.\"localhost:4891\"..:
47a0 6d 6f 64 65 6c 73 20 5c 5c 3d 27 28 5c 22 6d 69 73 74 72 61 6c 2d 37 62 2d 6f 70 65 6e 6f 72 63 models.\\='(\"mistral-7b-openorc
47c0 61 2e 51 34 5f 30 2e 67 67 75 66 5c 22 29 29 22 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 a.Q4_0.gguf\"))")..(provide.'gpt
47e0 65 6c 2d 6f 70 65 6e 61 69 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 73 2e 65 6c el-openai).;;;.gptel-backends.el
4800 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ends.here......................
4820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
48a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
48c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
48e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
49e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4a00 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 6b 61 67 69 2e 65 gptel-20240424.2306/gptel-kagi.e
4a20 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l...............................
4a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
4a80 30 30 31 36 31 33 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 34 37 31 00 20 30 00 00 00 0016132.00000000000.014471..0...
4aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
4b20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
4b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4c00 3b 3b 3b 20 67 70 74 65 6c 2d 6b 61 67 69 2e 65 6c 20 2d 2d 2d 20 4b 61 67 69 20 73 75 70 70 6f ;;;.gptel-kagi.el.---.Kagi.suppo
4c20 72 74 20 66 6f 72 20 67 70 74 65 6c 20 20 20 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e rt.for.gptel.....-*-.lexical-bin
4c40 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 ding:.t;.-*-..;;.Copyright.(C).2
4c60 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b 20 41 75 74 023..Karthik.Chikmagalur..;;.Aut
4c80 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 72 74 68 69 hor:.Karthik.Chikmagalur.<karthi
4ca0 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4b 65 79 77 6f kchikmagalur@gmail.com>.;;.Keywo
4cc0 72 64 73 3a 20 68 79 70 65 72 6d 65 64 69 61 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d rds:.hypermedia..;;.This.program
4ce0 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 .is.free.software;.you.can.redis
4d00 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 tribute.it.and/or.modify.;;.it.u
4d20 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 nder.the.terms.of.the.GNU.Genera
4d40 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 l.Public.License.as.published.by
4d60 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e .;;.the.Free.Software.Foundation
4d80 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 ,.either.version.3.of.the.Licens
4da0 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 e,.or.;;.(at.your.option).any.la
4dc0 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 ter.version...;;.This.program.is
4de0 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 .distributed.in.the.hope.that.it
4e00 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 .will.be.useful,.;;.but.WITHOUT.
4e20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 ANY.WARRANTY;.without.even.the.i
4e40 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 mplied.warranty.of.;;.MERCHANTAB
4e60 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 ILITY.or.FITNESS.FOR.A.PARTICULA
4e80 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 R.PURPOSE...See.the.;;.GNU.Gener
4ea0 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 al.Public.License.for.more.detai
4ec0 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 ls...;;.You.should.have.received
4ee0 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 .a.copy.of.the.GNU.General.Publi
4f00 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f c.License.;;.along.with.this.pro
4f20 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e gram...If.not,.see.<https://www.
4f40 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 gnu.org/licenses/>...;;;.Comment
4f60 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 ary:..;;.This.file.adds.support.
4f80 66 6f 72 20 74 68 65 20 4b 61 67 69 20 46 61 73 74 47 50 54 20 4c 4c 4d 20 41 50 49 20 74 6f 20 for.the.Kagi.FastGPT.LLM.API.to.
4fa0 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c gptel..;;;.Code:.(require.'gptel
4fc0 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 65 76 61 6c 2d 77 68 ).(require.'cl-generic).(eval-wh
4fe0 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 29 0a en-compile...(require.'cl-lib)).
5000 0a 3b 3b 3b 20 4b 61 67 69 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 6b .;;;.Kagi.(cl-defstruct.(gptel-k
5020 61 67 69 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6b 61 agi.(:constructor.gptel--make-ka
5040 67 69 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gi).............................
5060 28 3a 63 6f 70 69 65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (:copier.nil)...................
5080 20 20 20 20 20 20 20 20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e ..........(:include.gptel-backen
50a0 64 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 d)))..(cl-defmethod.gptel--parse
50c0 2d 72 65 73 70 6f 6e 73 65 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 69 29 -response.((_backend.gptel-kagi)
50e0 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 28 6c 65 74 2a 20 28 28 64 61 74 61 20 28 .response.info)...(let*.((data.(
5100 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 plist-get.response.:data))......
5120 20 20 20 20 28 6f 75 74 70 75 74 20 28 70 6c 69 73 74 2d 67 65 74 20 64 61 74 61 20 3a 6f 75 74 ....(output.(plist-get.data.:out
5140 70 75 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 66 65 72 65 6e 63 65 73 20 28 70 6c 69 73 put))..........(references.(plis
5160 74 2d 67 65 74 20 64 61 74 61 20 3a 72 65 66 65 72 65 6e 63 65 73 29 29 29 0a 20 20 20 20 28 77 t-get.data.:references))).....(w
5180 68 65 6e 20 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 20 20 20 28 73 65 74 71 20 72 65 66 65 72 hen.references.......(setq.refer
51a0 65 6e 63 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 77 69 74 68 20 ences.............(cl-loop.with.
51c0 6c 69 6e 6b 65 72 20 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 linker.=......................(p
51e0 63 61 73 65 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72 2d case.(buffer-local-value.'major-
5200 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mode............................
5220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 .....................(plist-get.
5240 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 info.:buffer))..................
5260 20 20 20 20 20 20 28 27 6f 72 67 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......('org-mode................
5280 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 65 78 74 20 75 72 6c 29 0a 20 20 20 20 .........(lambda.(text.url).....
52a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 5b ......................(format."[
52c0 5b 25 73 5d 5b 25 73 5d 5d 22 20 75 72 6c 20 74 65 78 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 [%s][%s]]".url.text)))..........
52e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 0a 20 20 ..............('markdown-mode...
5300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 74 ......................(lambda.(t
5320 65 78 74 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ext.url)........................
5340 20 20 20 28 66 6f 72 6d 61 74 20 22 5b 25 73 5d 28 25 73 29 22 20 74 65 78 74 20 75 72 6c 29 29 ...(format."[%s](%s)".text.url))
5360 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 5f 20 28 6c 61 6d )........................(_.(lam
5380 62 64 61 20 28 74 65 78 74 20 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bda.(text.url)..................
53a0 20 20 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 ...........(buttonize...........
53c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 28 6c 61 6d 62 64 61 20 ...................text.(lambda.
53e0 28 64 61 74 61 29 20 28 62 72 6f 77 73 65 2d 75 72 6c 20 64 61 74 61 29 29 0a 20 20 20 20 20 20 (data).(browse-url.data)).......
5400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 29 29 29 29 0a 20 .......................url))))..
5420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 72 65 66 20 61 63 72 6f ....................for.ref.acro
5440 73 73 20 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ss.references...................
5460 20 20 20 66 6f 72 20 74 69 74 6c 65 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 66 20 3a 74 ...for.title.=.(plist-get.ref.:t
5480 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 73 itle)......................for.s
54a0 6e 69 70 70 65 74 20 3d 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 66 20 3a 73 6e 69 70 70 65 74 nippet.=.(plist-get.ref.:snippet
54c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 75 72 6c 20 3d )......................for.url.=
54e0 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 66 20 3a 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 .(plist-get.ref.:url)...........
5500 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 20 75 70 66 72 6f 6d 20 31 0a 20 20 20 20 20 20 ...........for.n.upfrom.1.......
5520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 ...............collect..........
5540 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 66 6f 72 6d 61 74 20 22 5b 25 64 ............(concat.(format."[%d
5560 5d 20 22 20 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ].".n)..........................
5580 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 6c 69 6e 6b 65 72 20 74 69 74 6c 65 20 75 72 6c 29 20 22 ....(funcall.linker.title.url)."
55a0 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :.".............................
55c0 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 .(replace-regexp-in-string......
55e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 2f 3f 62 3e 22 ........................."</?b>"
5600 20 22 2a 22 20 73 6e 69 70 70 65 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."*".snippet))..................
5620 20 20 20 20 69 6e 74 6f 20 72 65 66 2d 73 74 72 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 ....into.ref-strings............
5640 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 ..........finally.return........
5660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 5c 6e 22 20 28 6d 61 ..............(concat."\n\n".(ma
5680 70 63 6f 6e 63 61 74 20 23 27 69 64 65 6e 74 69 74 79 20 72 65 66 2d 73 74 72 69 6e 67 73 20 22 pconcat.#'identity.ref-strings."
56a0 5c 6e 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 6f 75 74 70 75 74 20 \n"))))).........(concat.output.
56c0 72 65 66 65 72 65 6e 63 65 73 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 references)))..(cl-defmethod.gpt
56e0 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 el--request-data.((_backend.gpte
5700 6c 2d 6b 61 67 69 29 20 70 72 6f 6d 70 74 73 29 0a 20 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20 l-kagi).prompts)..."JSON.encode.
5720 50 52 4f 4d 50 54 53 20 66 6f 72 20 4b 61 67 69 2e 22 0a 20 20 28 70 63 61 73 65 2d 65 78 68 61 PROMPTS.for.Kagi."...(pcase-exha
5740 75 73 74 69 76 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 28 22 66 61 73 74 67 70 74 ustive.gptel-model.....("fastgpt
5760 22 0a 20 20 20 20 20 60 28 2c 40 70 72 6f 6d 70 74 73 20 3a 77 65 62 5f 73 65 61 72 63 68 20 74 "......`(,@prompts.:web_search.t
5780 20 3a 63 61 63 68 65 20 74 29 29 0a 20 20 20 20 28 28 61 6e 64 20 6d 6f 64 65 6c 20 28 67 75 61 .:cache.t)).....((and.model.(gua
57a0 72 64 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 73 75 6d 6d 61 72 69 7a 65 22 20 rd.(string-prefix-p."summarize".
57c0 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 60 28 2c 40 70 72 6f 6d 70 74 73 20 3a 65 6e 67 69 6e model)))......`(,@prompts.:engin
57e0 65 20 2c 28 73 75 62 73 74 72 69 6e 67 20 6d 6f 64 65 6c 20 31 30 29 29 29 29 29 0a 0a 28 63 6c e.,(substring.model.10)))))..(cl
5800 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 -defmethod.gptel--parse-buffer.(
5820 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6b 61 67 69 29 20 26 6f 70 74 69 6f 6e 61 6c 20 (_backend.gptel-kagi).&optional.
5840 5f 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 75 72 6c 20 28 6f 72 20 28 _max-entries)...(let.((url.(or.(
5860 74 68 69 6e 67 2d 61 74 2d 70 6f 69 6e 74 20 27 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 thing-at-point.'url)............
5880 20 20 20 20 20 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 ......(get-text-property.(point)
58a0 20 27 73 68 72 2d 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 .'shr-url)..................(get
58c0 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 69 6d 61 67 65 2d 75 72 -text-property.(point).'image-ur
58e0 6c 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 28 66 69 6c 65 6e 61 6d 65 20 28 74 68 69 6e 67 l))).........;;.(filename.(thing
5900 2d 61 74 2d 70 6f 69 6e 74 20 27 65 78 69 73 74 69 6e 67 2d 66 69 6c 65 6e 61 6d 65 29 29 20 3b -at-point.'existing-filename)).;
5920 6e 6f 20 66 69 6c 65 20 75 70 6c 6f 61 64 20 73 75 70 70 6f 72 74 20 79 65 74 0a 20 20 20 20 20 no.file.upload.support.yet......
5940 20 20 20 28 70 72 6f 70 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 ...(prop.(text-property-search-b
5960 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 ackward................'gptel.'r
5980 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 esponse................(when.(ge
59a0 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 t-char-property.(max.(point-min)
59c0 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(1-.(point)))..................
59e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 29 0a 20 .......................'gptel)..
5a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 61 ................t)))).....(if.(a
5a20 6e 64 20 75 72 6c 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 73 75 6d 6d 61 72 69 nd.url.(string-prefix-p."summari
5a40 7a 65 22 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 ze".gptel-model)).........(list.
5a60 3a 75 72 6c 20 75 72 6c 29 0a 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 70 72 6f 70 2d 6d :url.url).......(if.(and.(prop-m
5a80 61 74 63 68 2d 70 20 70 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f atch-p.prop)................(pro
5aa0 70 2d 6d 61 74 63 68 2d 76 61 6c 75 65 20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 p-match-value.prop))...........(
5ac0 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 75 73 65 72 20 70 72 6f 6d 70 74 20 66 6f 75 6e 64 user-error."No.user.prompt.found
5ae0 21 22 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 !").........(let.((prompts......
5b00 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20 20 20 20 20 20 20 20 ..........(string-trim..........
5b20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 .......(buffer-substring-no-prop
5b40 65 72 74 69 65 73 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 70 72 6f erties.(prop-match-beginning.pro
5b60 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p)..............................
5b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 65 ...................(prop-match-e
5ba0 6e 64 20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 nd.prop)).................(forma
5bc0 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 t."[\t\r\n.]*\\(?:%s\\)?[\t\r\n.
5be0 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 ]*".........................(reg
5c00 65 78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 exp-quote.(gptel-prompt-prefix-s
5c20 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 tring))).................(format
5c40 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 5d ."[\t\r\n.]*\\(?:%s\\)?[\t\r\n.]
5c60 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 65 *".........................(rege
5c80 78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d xp-quote.(gptel-response-prefix-
5ca0 73 74 72 69 6e 67 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 65 78 string))))))...........(pcase-ex
5cc0 68 61 75 73 74 69 76 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 haustive.gptel-model............
5ce0 20 28 22 66 61 73 74 67 70 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 .("fastgpt"..............(setq.p
5d00 72 6f 6d 70 74 73 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rompts.(list....................
5d20 20 20 20 20 20 20 20 20 20 3a 71 75 65 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........:query.................
5d40 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 70 20 70 72 ............(if.(prop-match-p.pr
5d60 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 op).............................
5d80 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(concat.....................
5da0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 61 6b 65 20 61 20 73 79 73 74 65 6d 20 6d 65 .............;;.Fake.a.system.me
5dc0 73 73 61 67 65 20 62 79 20 69 6e 63 6c 75 64 69 6e 67 20 69 74 20 69 6e 20 74 68 65 20 70 72 6f ssage.by.including.it.in.the.pro
5de0 6d 70 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mpt.............................
5e00 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 22 5c 6e 5c 6e .....gptel--system-message."\n\n
5e20 22 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ".prompts)......................
5e40 20 20 20 20 20 20 20 20 20 22 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e ........."")))).............((an
5e60 64 20 6d 6f 64 65 6c 20 28 67 75 61 72 64 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 d.model.(guard.(string-prefix-p.
5e80 22 73 75 6d 6d 61 72 69 7a 65 22 20 6d 6f 64 65 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 "summarize".model)))............
5ea0 20 20 3b 3b 20 49 66 20 74 68 65 20 65 6e 74 69 72 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 ..;;.If.the.entire.contents.of.t
5ec0 68 65 20 70 72 6f 6d 70 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 61 20 75 72 6c 2c 20 73 65 6e 64 he.prompt.looks.like.a.url,.send
5ee0 20 74 68 65 20 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 73 65 .the.url..............;;.Else.se
5f00 6e 64 20 74 68 65 20 74 65 78 74 20 6f 66 20 74 68 65 20 72 65 67 69 6f 6e 0a 20 20 20 20 20 20 nd.the.text.of.the.region.......
5f20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 .......(setq.prompts............
5f40 20 20 20 20 20 20 20 20 28 69 66 2d 6c 65 74 20 28 28 28 70 72 6f 70 2d 6d 61 74 63 68 2d 70 20 ........(if-let.(((prop-match-p.
5f60 70 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 prop))..........................
5f80 20 20 20 28 65 6e 67 69 6e 65 20 28 73 75 62 73 74 72 69 6e 67 20 6d 6f 64 65 6c 20 31 30 29 29 ...(engine.(substring.model.10))
5fa0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 74 27 73 )........................;;.It's
5fc0 20 61 20 72 65 67 69 6f 6e 20 6f 66 20 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .a.region.of.text...............
5fe0 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 3a 74 65 78 74 20 70 72 6f 6d 70 74 73 29 0a 20 20 .........(list.:text.prompts)...
6000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 22 29 29 29 29 0a 20 20 20 20 20 20 ..................."")))).......
6020 20 20 20 20 70 72 6f 6d 70 74 73 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 ....prompts)))))..;;;###autoload
6040 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 0a 20 20 20 20 28 .(cl-defun.gptel-make-kagi.....(
6060 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 73 74 72 65 61 6d 20 6b 65 79 0a 20 name.&key.curl-args.stream.key..
6080 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 6b 61 67 69 2e 63 6f 6d 22 29 0a 20 20 20 20 20 .........(host."kagi.com")......
60a0 20 20 20 20 20 28 68 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 29 20 60 28 28 22 41 75 74 68 .....(header.(lambda.().`(("Auth
60c0 6f 72 69 7a 61 74 69 6f 6e 22 20 2e 20 2c 28 63 6f 6e 63 61 74 20 22 42 6f 74 20 22 20 28 67 70 orization"...,(concat."Bot.".(gp
60e0 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 tel--get-api-key))))))..........
6100 20 28 6d 6f 64 65 6c 73 20 27 28 22 66 61 73 74 67 70 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 .(models.'("fastgpt"............
6120 20 20 20 20 20 20 20 20 20 22 73 75 6d 6d 61 72 69 7a 65 3a 63 65 63 69 6c 22 20 22 73 75 6d 6d ........."summarize:cecil"."summ
6140 61 72 69 7a 65 3a 61 67 6e 65 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 arize:agnes"....................
6160 20 22 73 75 6d 6d 61 72 69 7a 65 3a 64 61 70 68 6e 65 22 20 22 73 75 6d 6d 61 72 69 7a 65 3a 6d ."summarize:daphne"."summarize:m
6180 75 72 69 65 6c 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 uriel"))...........(protocol."ht
61a0 74 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 22 2f 61 70 69 2f tps")...........(endpoint."/api/
61c0 76 30 2f 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 4b 61 67 69 20 46 61 73 74 47 50 v0/"))..."Register.a.Kagi.FastGP
61e0 54 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a T.backend.for.gptel.with.NAME...
6200 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f Keyword.arguments:..CURL-ARGS.(o
6220 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c ptional).is.a.list.of.additional
6240 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 74 68 65 20 4b 61 .Curl.arguments...HOST.is.the.Ka
6260 67 69 20 68 6f 73 74 20 28 77 69 74 68 20 70 6f 72 74 29 2c 20 64 65 66 61 75 6c 74 73 20 74 6f gi.host.(with.port),.defaults.to
6280 20 5c 22 6b 61 67 69 2e 63 6f 6d 5c 22 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 74 .\"kagi.com\"...MODELS.is.a.list
62a0 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 4b 61 67 69 20 6d 6f 64 65 6c 73 3a 20 6f 6e 6c 79 20 .of.available.Kagi.models:.only.
62c0 66 61 73 74 67 70 74 20 69 73 20 73 75 70 70 6f 72 74 65 64 2e 0a 0a 53 54 52 45 41 4d 20 69 73 fastgpt.is.supported...STREAM.is
62e0 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 .a.boolean.to.toggle.streaming.r
6300 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 65 2e 20 20 4b 61 esponses,.defaults.to.false...Ka
6320 67 69 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 61 20 73 74 72 65 61 6d 69 6e 67 20 gi.does.not.support.a.streaming.
6340 41 50 49 20 79 65 74 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70 API.yet...PROTOCOL.(optional).sp
6360 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 73 20 62 79 20 64 ecifies.the.protocol,.https.by.d
6380 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 efault...ENDPOINT.(optional).is.
63a0 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 the.API.endpoint.for.completions
63c0 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f 76 30 2f 66 61 73 74 67 70 74 5c ,.defaults.to.\"/api/v0/fastgpt\
63e0 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 "...HEADER.(optional).is.for.add
6400 69 74 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 itional.headers.to.send.with.eac
6420 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 h.request...It.should.be.an.alis
6440 74 20 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 t.or.a.function.that.retuns.an.a
6460 6c 69 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e list,.like:.((\"Content-Type\"..
6480 20 5c 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 .\"application/json\"))..KEY.(op
64a0 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 tional).is.a.variable.whose.valu
64c0 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 e.is.the.API.key,.or.function.th
64e0 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 0a 0a 45 78 61 6d 70 6c 65 3a 0a 2d 2d at.returns.the.key...Example:.--
6500 2d 2d 2d 2d 2d 0a 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 20 5c 22 4b 61 67 69 5c 22 -----..(gptel-make-kagi.\"Kagi\"
6520 20 3a 6b 65 79 20 6d 79 2d 6b 61 67 69 2d 6b 65 79 29 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 .:key.my-kagi-key)"...(declare.(
6540 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 73 74 72 65 61 6d 20 20 20 20 20 20 20 20 20 20 20 20 20 indent.1))...stream.............
6560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 53 69 6c 65 6e 63 65 20 62 79 74 65 ...................;Silence.byte
6580 2d 63 6f 6d 70 69 6c 65 72 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 -compiler...(let.((backend.(gpte
65a0 6c 2d 2d 6d 61 6b 65 2d 6b 61 67 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a l--make-kagi...................:
65c0 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 curl-args.curl-args.............
65e0 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......:name.name................
6600 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...:host.host...................
6620 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :header.header..................
6640 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 .:key.key...................:mod
6660 65 6c 73 20 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 els.models...................:pr
6680 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 otocol.protocol.................
66a0 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 ..:endpoint.endpoint............
66c0 20 20 20 20 20 20 20 3a 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c .......:url...................(l
66e0 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f ambda.().....................(co
6700 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e ncat.protocol."://".host.endpoin
6720 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 t.............................(i
6740 66 20 28 65 71 75 61 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 22 66 61 73 74 67 70 74 22 29 0a f.(equal.gptel-model."fastgpt").
6760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6780 22 66 61 73 74 67 70 74 22 20 22 73 75 6d 6d 61 72 69 7a 65 22 29 29 29 29 29 29 0a 20 20 20 20 "fastgpt"."summarize")))))).....
67a0 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 (prog1.backend.......(setf.(alis
67c0 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 t-get.name.gptel--known-backends
67e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 ........................nil.nil.
6800 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 #'equal)...................backe
6820 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 6b 61 67 69 29 0a 3b 3b nd))))..(provide.'gptel-kagi).;;
6840 3b 20 67 70 74 65 6c 2d 6b 61 67 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 ;.gptel-kagi.el.ends.here.......
6860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
68e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
69e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a00 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 63 75 72 6c 2e 65 gptel-20240424.2306/gptel-curl.e
6a20 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l...............................
6a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
6a80 30 30 34 37 30 36 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 35 33 36 00 20 30 00 00 00 0047067.00000000000.014536..0...
6aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
6b20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
6b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c00 3b 3b 3b 20 67 70 74 65 6c 2d 63 75 72 6c 2e 65 6c 20 2d 2d 2d 20 43 75 72 6c 20 73 75 70 70 6f ;;;.gptel-curl.el.---.Curl.suppo
6c20 72 74 20 66 6f 72 20 47 50 54 65 6c 20 20 20 20 20 20 20 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c rt.for.GPTel.........-*-.lexical
6c40 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 -binding:.t;.-*-..;;.Copyright.(
6c60 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2023..Karthik.Chikmagalur..;;
6c80 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 3b 3b 20 3c .Author:.Karthik.Chikmagalur;;.<
6ca0 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b karthikchikmagalur@gmail.com>.;;
6cc0 20 4b 65 79 77 6f 72 64 73 3a 20 63 6f 6e 76 65 6e 69 65 6e 63 65 0a 0a 3b 3b 20 53 50 44 58 2d .Keywords:.convenience..;;.SPDX-
6ce0 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c License-Identifier:.GPL-3.0-or-l
6d00 61 74 65 72 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f ater..;;.This.program.is.free.so
6d20 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 ftware;.you.can.redistribute.it.
6d40 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 and/or.modify.;;.it.under.the.te
6d60 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 rms.of.the.GNU.General.Public.Li
6d80 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 cense.as.published.by.;;.the.Fre
6da0 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 e.Software.Foundation,.either.ve
6dc0 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 rsion.3.of.the.License,.or.;;.(a
6de0 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e t.your.option).any.later.version
6e00 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 ...;;.This.program.is.distribute
6e20 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 d.in.the.hope.that.it.will.be.us
6e40 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 eful,.;;.but.WITHOUT.ANY.WARRANT
6e60 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 Y;.without.even.the.implied.warr
6e80 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 anty.of.;;.MERCHANTABILITY.or.FI
6ea0 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 TNESS.FOR.A.PARTICULAR.PURPOSE..
6ec0 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c .See.the.;;.GNU.General.Public.L
6ee0 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 icense.for.more.details...;;.You
6f00 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 .should.have.received.a.copy.of.
6f20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b the.GNU.General.Public.License.;
6f40 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e ;.along.with.this.program...If.n
6f60 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 ot,.see.<https://www.gnu.org/lic
6f80 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 43 75 enses/>...;;;.Commentary:..;;.Cu
6fa0 72 6c 20 73 75 70 70 6f 72 74 20 66 6f 72 20 47 50 54 65 6c 2e 20 20 55 74 69 6c 69 74 79 20 66 rl.support.for.GPTel...Utility.f
6fc0 75 6e 63 74 69 6f 6e 73 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 unctions...;;;.Code:..(require.'
6fe0 67 70 74 65 6c 29 0a 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 72 65 gptel)..(eval-when-compile...(re
7000 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 20 20 28 72 65 71 75 69 72 65 20 27 73 75 62 72 2d quire.'cl-lib)...(require.'subr-
7020 78 29 29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 70 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e x)).(require.'map)..(declare-fun
7040 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 20 28 29 29 0a 28 64 65 66 76 ction.json-read."json".()).(defv
7060 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 ar.json-object-type)..(declare-f
7080 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 73 74 72 65 61 6d 2d 63 6f 6e 76 65 72 74 2d 6d 61 unction.gptel--stream-convert-ma
70a0 72 6b 64 6f 77 6e 2d 3e 6f 72 67 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 0a 28 64 65 66 63 6f rkdown->org."gptel-org")..(defco
70c0 6e 73 74 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 63 6f 6d 6d 6f 6e 2d 61 72 67 73 0a 20 20 28 69 nst.gptel-curl--common-args...(i
70e0 66 20 28 6d 65 6d 71 20 73 79 73 74 65 6d 2d 74 79 70 65 20 27 28 77 69 6e 64 6f 77 73 2d 6e 74 f.(memq.system-type.'(windows-nt
7100 20 6d 73 2d 64 6f 73 29 29 0a 20 20 20 20 20 20 27 28 22 2d 2d 64 69 73 61 62 6c 65 22 20 22 2d .ms-dos)).......'("--disable"."-
7120 2d 6c 6f 63 61 74 69 6f 6e 22 20 22 2d 2d 73 69 6c 65 6e 74 22 20 22 2d 58 50 4f 53 54 22 0a 20 -location"."--silent"."-XPOST"..
7140 20 20 20 20 20 20 20 22 2d 79 33 30 30 22 20 22 2d 59 31 22 20 22 2d 44 2d 22 29 0a 20 20 20 20 ......."-y300"."-Y1"."-D-").....
7160 27 28 22 2d 2d 64 69 73 61 62 6c 65 22 20 22 2d 2d 6c 6f 63 61 74 69 6f 6e 22 20 22 2d 2d 73 69 '("--disable"."--location"."--si
7180 6c 65 6e 74 22 20 22 2d 2d 63 6f 6d 70 72 65 73 73 65 64 22 0a 20 20 20 20 20 20 22 2d 58 50 4f lent"."--compressed"......."-XPO
71a0 53 54 22 20 22 2d 79 33 30 30 22 20 22 2d 59 31 22 20 22 2d 44 2d 22 29 29 0a 20 20 22 41 72 67 ST"."-y300"."-Y1"."-D-"))..."Arg
71c0 75 6d 65 6e 74 73 20 61 6c 77 61 79 73 20 70 61 73 73 65 64 20 74 6f 20 43 75 72 6c 20 66 6f 72 uments.always.passed.to.Curl.for
71e0 20 67 70 74 65 6c 20 71 75 65 72 69 65 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c .gptel.queries.")..(defvar.gptel
7200 2d 63 75 72 6c 2d 2d 70 72 6f 63 65 73 73 2d 61 6c 69 73 74 20 6e 69 6c 0a 20 20 22 41 6c 69 73 -curl--process-alist.nil..."Alis
7220 74 20 6f 66 20 61 63 74 69 76 65 20 47 50 54 65 6c 20 63 75 72 6c 20 72 65 71 75 65 73 74 73 2e t.of.active.GPTel.curl.requests.
7240 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 61 72 67 73 20 ")..(defun.gptel-curl--get-args.
7260 28 64 61 74 61 20 74 6f 6b 65 6e 29 0a 20 20 22 50 72 6f 64 75 63 65 20 6c 69 73 74 20 6f 66 20 (data.token)..."Produce.list.of.
7280 61 72 67 75 6d 65 6e 74 73 20 66 6f 72 20 63 61 6c 6c 69 6e 67 20 43 75 72 6c 2e 0a 0a 52 45 51 arguments.for.calling.Curl...REQ
72a0 55 45 53 54 2d 44 41 54 41 20 69 73 20 74 68 65 20 64 61 74 61 20 74 6f 20 73 65 6e 64 2c 20 54 UEST-DATA.is.the.data.to.send,.T
72c0 4f 4b 45 4e 20 69 73 20 61 20 75 6e 69 71 75 65 20 69 64 65 6e 74 69 66 69 65 72 2e 22 0a 20 20 OKEN.is.a.unique.identifier."...
72e0 28 6c 65 74 2a 20 28 28 75 72 6c 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 2d 75 72 6c 20 28 (let*.((url.(let.((backend-url.(
7300 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 75 72 6c 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 gptel-backend-url.gptel-backend)
7320 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 )).....................(if.(func
7340 74 69 6f 6e 70 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 tionp.backend-url)..............
7360 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 ...........(funcall.backend-url)
7380 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 64 61 74 61 2d 6a .backend-url)))..........(data-j
73a0 73 6f 6e 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 28 67 70 74 65 6c son.(encode-coding-string.(gptel
73c0 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 64 61 74 61 29 20 27 75 74 66 2d 38 29 29 0a 20 20 20 --json-encode.data).'utf-8))....
73e0 20 20 20 20 20 20 28 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 ......(headers...........(append
7400 20 27 28 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f .'(("Content-Type"..."applicatio
7420 6e 2f 6a 73 6f 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 n/json"))...................(whe
7440 6e 2d 6c 65 74 20 28 28 68 65 61 64 65 72 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 68 65 n-let.((header.(gptel-backend-he
7460 61 64 65 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 ader.gptel-backend)))...........
7480 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 68 65 61 64 65 72 29 ..........(if.(functionp.header)
74a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c .........................(funcal
74c0 6c 20 68 65 61 64 65 72 29 20 68 65 61 64 65 72 29 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 l.header).header))))).....(when.
74e0 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 gptel-log-level.......(when.(eq.
7500 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 20 20 gptel-log-level.'debug).........
7520 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 0a (gptel--log.(gptel--json-encode.
7540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 .....................(mapcar.(la
7560 6d 62 64 61 20 28 70 61 69 72 29 20 28 63 6f 6e 73 20 28 69 6e 74 65 72 6e 20 28 63 61 72 20 70 mbda.(pair).(cons.(intern.(car.p
7580 61 69 72 29 29 20 28 63 64 72 20 70 61 69 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 air)).(cdr.pair)))..............
75a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 20 20 ................headers)).......
75c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 71 75 65 73 74 20 68 65 61 64 65 72 73 22 29 .............."request.headers")
75e0 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 64 61 74 61 2d 6a 73 6f 6e 20 22 72 ).......(gptel--log.data-json."r
7600 65 71 75 65 73 74 20 62 6f 64 79 22 29 29 0a 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 20 20 20 equest.body")).....(append......
7620 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 63 6f 6d 6d 6f 6e 2d 61 72 67 73 0a 20 20 20 20 20 28 67 70 gptel-curl--common-args......(gp
7640 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 63 75 72 6c 2d 61 72 67 73 20 67 70 74 65 6c 2d 62 61 63 6b tel-backend-curl-args.gptel-back
7660 65 6e 64 29 0a 20 20 20 20 20 28 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 2d 77 28 25 73 20 2e end)......(list.(format."-w(%s..
7680 20 25 25 7b 73 69 7a 65 5f 68 65 61 64 65 72 7d 29 22 20 74 6f 6b 65 6e 29 29 0a 20 20 20 20 20 .%%{size_header})".token))......
76a0 28 69 66 20 28 6c 65 6e 67 74 68 3c 20 64 61 74 61 2d 6a 73 6f 6e 20 67 70 74 65 6c 2d 63 75 72 (if.(length<.data-json.gptel-cur
76c0 6c 2d 66 69 6c 65 2d 73 69 7a 65 2d 74 68 72 65 73 68 6f 6c 64 29 0a 20 20 20 20 20 20 20 20 20 l-file-size-threshold)..........
76e0 28 6c 69 73 74 20 28 66 6f 72 6d 61 74 20 22 2d 64 25 73 22 20 64 61 74 61 2d 6a 73 6f 6e 29 29 (list.(format."-d%s".data-json))
7700 0a 20 20 20 20 20 20 20 28 6c 65 74 72 65 63 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 74 65 6d ........(letrec............((tem
7720 70 2d 66 69 6c 65 6e 61 6d 65 20 28 6d 61 6b 65 2d 74 65 6d 70 2d 66 69 6c 65 20 22 67 70 74 65 p-filename.(make-temp-file."gpte
7740 6c 2d 63 75 72 6c 2d 64 61 74 61 22 20 6e 69 6c 20 22 2e 6a 73 6f 6e 22 20 64 61 74 61 2d 6a 73 l-curl-data".nil.".json".data-js
7760 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 65 61 6e 75 70 2d 66 6e 20 28 6c 61 on)).............(cleanup-fn.(la
7780 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mbda.(&rest._)..................
77a0 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 74 65 .........(when.(file-exists-p.te
77c0 6d 70 2d 66 69 6c 65 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mp-filename)....................
77e0 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 66 69 6c 65 20 74 65 6d 70 2d 66 69 6c 65 6e .........(delete-file.temp-filen
7800 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ame)............................
7820 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e .(remove-hook.'gptel-post-respon
7840 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 63 6c 65 61 6e 75 70 2d 66 6e 29 29 29 29 29 0a 20 20 20 se-functions.cleanup-fn)))))....
7860 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 ......(add-hook.'gptel-post-resp
7880 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 63 6c 65 61 6e 75 70 2d 66 6e 29 0a 20 20 20 20 20 onse-functions.cleanup-fn)......
78a0 20 20 20 20 28 6c 69 73 74 20 22 2d 2d 64 61 74 61 2d 62 69 6e 61 72 79 22 0a 20 20 20 20 20 20 ....(list."--data-binary".......
78c0 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 40 25 73 22 20 74 65 6d 70 2d 66 69 6c 65 .........(format."@%s".temp-file
78e0 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 28 73 74 72 69 6e 67 name))))......(when.(not.(string
7900 2d 65 6d 70 74 79 2d 70 20 67 70 74 65 6c 2d 70 72 6f 78 79 29 29 0a 20 20 20 20 20 20 20 28 6c -empty-p.gptel-proxy))........(l
7920 69 73 74 20 22 2d 2d 70 72 6f 78 79 22 20 67 70 74 65 6c 2d 70 72 6f 78 79 0a 20 20 20 20 20 20 ist."--proxy".gptel-proxy.......
7940 20 20 20 20 20 20 20 22 2d 2d 70 72 6f 78 79 2d 6e 65 67 6f 74 69 61 74 65 22 0a 20 20 20 20 20 ......."--proxy-negotiate"......
7960 20 20 20 20 20 20 20 20 22 2d 2d 70 72 6f 78 79 2d 75 73 65 72 22 20 22 3a 22 29 29 0a 20 20 20 ........"--proxy-user".":"))....
7980 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 28 6b 65 79 20 2e 20 76 61 6c 29 20 69 6e 20 68 65 ..(cl-loop.for.(key...val).in.he
79a0 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 66 6f 72 aders...............collect.(for
79c0 6d 61 74 20 22 2d 48 25 73 3a 20 25 73 22 20 6b 65 79 20 76 61 6c 29 29 0a 20 20 20 20 20 28 6c mat."-H%s:.%s".key.val))......(l
79e0 69 73 74 20 75 72 6c 29 29 29 29 0a 0a 3b 3b 54 4f 44 4f 3a 20 54 68 65 20 3a 74 72 61 6e 73 66 ist.url))))..;;TODO:.The.:transf
7a00 6f 72 6d 65 72 20 61 72 67 75 6d 65 6e 74 20 68 65 72 65 20 69 73 20 61 6e 20 61 6c 74 65 72 6e ormer.argument.here.is.an.altern
7a20 61 74 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 0a 3b 3b 60 67 70 74 65 6c 2d 72 ate.implementation.of.;;`gptel-r
7a40 65 73 70 6f 6e 73 65 2d 66 69 6c 74 65 72 2d 66 75 6e 63 74 69 6f 6e 73 27 2e 20 54 68 65 20 74 esponse-filter-functions'..The.t
7a60 77 6f 20 6e 65 65 64 20 74 6f 20 62 65 20 75 6e 69 66 69 65 64 2e 0a 3b 3b 3b 23 23 23 61 75 74 wo.need.to.be.unified..;;;###aut
7a80 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 67 65 74 2d 72 65 73 70 oload.(defun.gptel-curl-get-resp
7aa0 6f 6e 73 65 20 28 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 63 61 6c 6c 62 61 63 6b 29 0a 20 onse.(info.&optional.callback)..
7ac0 20 22 52 65 74 72 69 65 76 65 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 70 72 6f 6d 70 74 20 69 6e ."Retrieve.response.to.prompt.in
7ae0 20 49 4e 46 4f 2e 0a 0a 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74 20 77 69 74 68 20 74 68 65 .INFO...INFO.is.a.plist.with.the
7b00 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 3a 0a 2d 20 3a 64 61 74 61 20 28 74 68 65 20 64 61 .following.keys:.-.:data.(the.da
7b20 74 61 20 62 65 69 6e 67 20 73 65 6e 74 29 0a 2d 20 3a 62 75 66 66 65 72 20 28 74 68 65 20 67 70 ta.being.sent).-.:buffer.(the.gp
7b40 74 65 6c 20 62 75 66 66 65 72 29 0a 2d 20 3a 70 6f 73 69 74 69 6f 6e 20 28 6d 61 72 6b 65 72 20 tel.buffer).-.:position.(marker.
7b60 61 74 20 77 68 69 63 68 20 74 6f 20 69 6e 73 65 72 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 29 at.which.to.insert.the.response)
7b80 2e 0a 0a 43 61 6c 6c 20 43 41 4c 4c 42 41 43 4b 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e ...Call.CALLBACK.with.the.respon
7ba0 73 65 20 61 6e 64 20 49 4e 46 4f 20 61 66 74 65 72 77 61 72 64 73 2e 20 20 49 66 20 6f 6d 69 74 se.and.INFO.afterwards...If.omit
7bc0 74 65 64 0a 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74 ted.the.response.is.inserted.int
7be0 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 61 66 74 65 72 20 70 6f 69 6e 74 o.the.current.buffer.after.point
7c00 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 74 6f 6b 65 6e 20 28 6d 64 35 20 28 66 6f 72 6d 61 74 20 ."...(let*.((token.(md5.(format.
7c20 22 25 73 25 73 25 73 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "%s%s%s%s"......................
7c40 20 20 20 20 20 20 20 20 28 72 61 6e 64 6f 6d 29 20 28 65 6d 61 63 73 2d 70 69 64 29 20 28 75 73 ........(random).(emacs-pid).(us
7c60 65 72 2d 66 75 6c 6c 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er-full-name)...................
7c80 20 20 20 20 20 20 20 20 20 20 20 28 72 65 63 65 6e 74 2d 6b 65 79 73 29 29 29 29 0a 20 20 20 20 ...........(recent-keys)))).....
7ca0 20 20 20 20 20 28 61 72 67 73 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 61 72 67 73 .....(args.(gptel-curl--get-args
7cc0 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 20 74 6f 6b 65 6e 29 29 0a .(plist-get.info.:data).token)).
7ce0 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 28 61 6e 64 20 67 70 74 65 6c 2d 73 74 72 65 .........(stream.(and.gptel-stre
7d00 61 6d 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 62 am.(gptel-backend-stream.gptel-b
7d20 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 20 28 61 70 70 ackend)))..........(process.(app
7d40 6c 79 20 23 27 73 74 61 72 74 2d 70 72 6f 63 65 73 73 20 22 67 70 74 65 6c 2d 63 75 72 6c 22 0a ly.#'start-process."gptel-curl".
7d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 6e 65 72 61 .........................(genera
7d80 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 20 22 2a 67 70 74 65 6c 2d 63 75 72 6c 2a 22 29 20 22 63 te-new-buffer."*gptel-curl*")."c
7da0 75 72 6c 22 20 61 72 67 73 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c url".args))).....(when.(eq.gptel
7dc0 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d -log-level.'debug).......(gptel-
7de0 2d 6c 6f 67 20 28 6d 61 70 63 6f 6e 63 61 74 20 23 27 73 68 65 6c 6c 2d 71 75 6f 74 65 2d 61 72 -log.(mapconcat.#'shell-quote-ar
7e00 67 75 6d 65 6e 74 20 28 63 6f 6e 73 20 22 63 75 72 6c 22 20 61 72 67 73 29 20 22 20 5c 5c 5c 6e gument.(cons."curl".args).".\\\n
7e20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 71 75 65 73 74 20 43 75 ")..................."request.Cu
7e40 72 6c 20 63 6f 6d 6d 61 6e 64 22 20 27 6e 6f 2d 6a 73 6f 6e 29 29 0a 20 20 20 20 28 77 69 74 68 rl.command".'no-json)).....(with
7e60 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 -current-buffer.(process-buffer.
7e80 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 71 75 65 72 process).......(set-process-quer
7ea0 79 2d 6f 6e 2d 65 78 69 74 2d 66 6c 61 67 20 70 72 6f 63 65 73 73 20 6e 69 6c 29 0a 20 20 20 20 y-on-exit-flag.process.nil).....
7ec0 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74 65 6c ..(setf.(alist-get.process.gptel
7ee0 2d 63 75 72 6c 2d 2d 70 72 6f 63 65 73 73 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 -curl--process-alist)...........
7f00 20 20 28 6e 63 6f 6e 63 20 28 6c 69 73 74 20 3a 74 6f 6b 65 6e 20 74 6f 6b 65 6e 0a 20 20 20 20 ..(nconc.(list.:token.token.....
7f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 20 60 61 .....................;;.FIXME.`a
7f40 72 65 66 27 20 62 72 65 61 6b 73 20 60 63 6c 2d 73 74 72 75 63 74 27 20 61 62 73 74 72 61 63 74 ref'.breaks.`cl-struct'.abstract
7f60 69 6f 6e 20 62 6f 75 6e 64 61 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ion.boundary....................
7f80 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 20 60 63 6c 2d 2d 67 65 6e 65 72 69 63 2d 6d 65 74 68 ......;;.FIXME.`cl--generic-meth
7fa0 6f 64 27 20 69 73 20 61 6e 20 69 6e 74 65 72 6e 61 6c 20 60 63 6c 2d 73 74 72 75 63 74 27 0a 20 od'.is.an.internal.`cl-struct'..
7fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 73 65 72 20 ........................:parser.
7fe0 28 63 6c 2d 2d 67 65 6e 65 72 69 63 2d 6d 65 74 68 6f 64 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 20 (cl--generic-method-function....
8000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
8020 69 66 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.stream.......................
8040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 66 69 6e 64 2d 6d 65 74 68 6f 64 0a ................(cl-find-method.
8060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8080 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d .......'gptel-curl--parse-stream
80a0 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .nil............................
80c0 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............(list...............
80e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 72 65 66 20 ..........................(aref.
8100 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 (buffer-local-value.............
8120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8140 20 20 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 ...'gptel-backend.(plist-get.inf
8160 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o.:buffer)).....................
8180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 29 20 74 29 29 ..........................0).t))
81a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
81c0 20 20 20 20 20 28 63 6c 2d 66 69 6e 64 2d 6d 65 74 68 6f 64 0a 20 20 20 20 20 20 20 20 20 20 20 .....(cl-find-method............
81e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c ..........................'gptel
8200 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 --parse-response.nil............
8220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a ..........................(list.
8240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8260 20 20 20 20 20 20 28 61 72 65 66 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 0a ......(aref.(buffer-local-value.
8280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
82a0 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 70 6c 69 .............'gptel-backend.(pli
82c0 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 st-get.info.:buffer))...........
82e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8300 20 20 30 29 20 74 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..0).t.t))))....................
8320 20 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 28 6f 72 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 ......:callback.(or.callback....
8340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8360 20 20 20 20 28 69 66 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(if.stream..................
8380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74 65 ..........................#'gpte
83a0 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 0a 20 l-curl--stream-insert-response..
83c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
83e0 20 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 ........#'gptel--insert-response
8400 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 72 61 ))..........................:tra
8420 6e 73 66 6f 72 6d 65 72 20 28 77 68 65 6e 20 28 65 71 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c nsformer.(when.(eq.(buffer-local
8440 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -value..........................
8460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 61 6a 6f 72 2d 6d ........................'major-m
8480 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ode.............................
84a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 .....................(plist-get.
84c0 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 info.:buffer))..................
84e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 ...............................'
8500 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 org-mode).......................
8520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 74 72 65 61 6d ..................(gptel--stream
8540 2d 63 6f 6e 76 65 72 74 2d 6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 29 29 29 0a 20 20 20 20 20 20 -convert-markdown->org))).......
8560 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 28 69 66 20 73 74 .............info)).......(if.st
8580 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65 74 2d 70 72 6f 63 65 ream...........(progn.(set-proce
85a0 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 6f 63 65 73 73 20 23 27 67 70 74 65 6c 2d 63 75 72 6c ss-sentinel.process.#'gptel-curl
85c0 2d 2d 73 74 72 65 61 6d 2d 63 6c 65 61 6e 75 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --stream-cleanup)...............
85e0 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 66 69 6c 74 65 72 20 70 72 6f 63 65 73 73 20 23 ...(set-process-filter.process.#
8600 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 66 69 6c 74 65 72 29 29 0a 20 20 20 'gptel-curl--stream-filter))....
8620 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 6f 63 65 .....(set-process-sentinel.proce
8640 73 73 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 65 6e 74 69 6e 65 6c 29 29 29 29 29 0a 0a ss.#'gptel-curl--sentinel)))))..
8660 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 6c 6f 67 2d 72 65 73 70 6f 6e 73 65 20 (defun.gptel-curl--log-response.
8680 28 70 72 6f 63 2d 62 75 66 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 72 65 (proc-buf.proc-info)..."Parse.re
86a0 73 70 6f 6e 73 65 20 62 75 66 66 65 72 20 50 52 4f 43 2d 42 55 46 20 61 6e 64 20 6c 6f 67 20 72 sponse.buffer.PROC-BUF.and.log.r
86c0 65 73 70 6f 6e 73 65 2e 0a 0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73 20 74 68 65 20 70 6c 69 73 74 esponse...PROC-INFO.is.the.plist
86e0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 70 72 6f 63 65 73 73 20 6d 65 74 61 64 61 74 61 2e 22 0a 20 .containing.process.metadata."..
8700 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 0a 20 .(with-current-buffer.proc-buf..
8720 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 ...(save-excursion.......(goto-c
8740 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 72 65 har.(point-min)).......(when.(re
8760 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 0d 3f 5c 6e 0d 3f 5c 6e 22 20 6e 69 6c 20 74 -search-forward.".?\n.?\n".nil.t
8780 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 ).........(when.(eq.gptel-log-le
87a0 76 65 6c 20 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f vel.'debug)...........(gptel--lo
87c0 67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 g.(gptel--json-encode...........
87e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e .............(buffer-substring-n
8800 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o-properties....................
8820 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 29 0a .....(point-min).(1-.(point)))).
8840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 ......................"response.
8860 68 65 61 64 65 72 73 22 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 20 28 70 6f 69 headers")).........(let.((p.(poi
8880 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 65 61 72 63 68 2d 66 6f nt)))...........(when.(search-fo
88a0 72 77 61 72 64 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 74 6f 6b 65 rward.(plist-get.proc-info.:toke
88c0 6e 29 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 n).nil.t).............(goto-char
88e0 20 28 31 2d 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 .(1-.(match-beginning.0)))......
8900 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 .......(gptel--log.(buffer-subst
8920 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 70 20 28 70 6f 69 6e 74 29 29 0a 20 20 ring-no-properties.p.(point))...
8940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 ......................"response.
8960 62 6f 64 79 22 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 61 62 6f 72 74 body")))))))..(defun.gptel-abort
8980 20 28 62 75 66 29 0a 20 20 22 53 74 6f 70 20 61 6e 79 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 .(buf)..."Stop.any.active.gptel.
89a0 70 72 6f 63 65 73 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 62 75 66 66 65 72 20 42 process.associated.with.buffer.B
89c0 55 46 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 63 75 72 72 65 UF."...(interactive.(list.(curre
89e0 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 75 73 65 nt-buffer)))...(unless.gptel-use
8a00 2d 63 75 72 6c 0a 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 43 61 6e 6e 6f 74 20 73 74 -curl.....(user-error."Cannot.st
8a20 6f 70 20 61 20 60 75 72 6c 2d 72 65 74 72 69 65 76 65 27 20 72 65 71 75 65 73 74 21 22 29 29 0a op.a.`url-retrieve'.request!")).
8a40 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 70 72 6f 63 2d 61 74 74 72 73 0a 20 20 20 20 20 20 20 20 ..(if-let*.((proc-attrs.........
8a60 20 20 20 20 28 63 6c 2d 66 69 6e 64 2d 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 ....(cl-find-if..............(la
8a80 6d 62 64 61 20 28 70 72 6f 63 2d 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mbda.(proc-list)................
8aa0 28 65 71 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 64 72 20 70 72 6f 63 2d 6c 69 73 74 29 20 3a (eq.(plist-get.(cdr.proc-list).:
8ac0 62 75 66 66 65 72 29 20 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c buffer).buf))..............gptel
8ae0 2d 63 75 72 6c 2d 2d 70 72 6f 63 65 73 73 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 -curl--process-alist))..........
8b00 20 20 20 28 70 72 6f 63 20 28 63 61 72 20 70 72 6f 63 2d 61 74 74 72 73 29 29 29 0a 20 20 20 20 ...(proc.(car.proc-attrs))).....
8b20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 ..(progn.........(setf.(alist-ge
8b40 74 20 70 72 6f 63 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 72 6f 63 65 73 73 2d 61 6c 69 73 74 t.proc.gptel-curl--process-alist
8b60 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d .nil.'remove).nil).........(set-
8b80 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 70 72 6f 63 20 23 27 69 67 6e 6f 72 65 29 0a process-sentinel.proc.#'ignore).
8ba0 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 70 72 6f 63 65 73 73 20 70 72 6f 63 29 0a 20 20 ........(delete-process.proc)...
8bc0 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 ......(kill-buffer.(process-buff
8be0 65 72 20 70 72 6f 63 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d er.proc)).........(with-current-
8c00 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c buffer.buf...........(when.gptel
8c20 2d 6d 6f 64 65 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 20 22 20 52 -mode.(gptel--update-status..".R
8c40 65 61 64 79 22 20 27 73 75 63 63 65 73 73 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 eady".'success))).........(messa
8c60 67 65 20 22 53 74 6f 70 70 65 64 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 69 6e 20 62 75 66 ge."Stopped.gptel.request.in.buf
8c80 66 65 72 20 25 53 22 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 62 75 66 29 29 29 0a 20 20 20 20 fer.%S".(buffer-name.buf))).....
8ca0 28 6d 65 73 73 61 67 65 20 22 4e 6f 20 67 70 74 65 6c 20 72 65 71 75 65 73 74 20 61 73 73 6f 63 (message."No.gptel.request.assoc
8cc0 69 61 74 65 64 20 77 69 74 68 20 62 75 66 66 65 72 20 25 53 22 20 28 62 75 66 66 65 72 2d 6e 61 iated.with.buffer.%S".(buffer-na
8ce0 6d 65 20 62 75 66 29 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 53 65 70 61 72 61 74 65 20 75 73 me.buf))))..;;.TODO:.Separate.us
8d00 65 72 2d 6d 65 73 73 61 67 69 6e 67 20 66 72 6f 6d 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a er-messaging.from.this.function.
8d20 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 63 6c 65 61 6e 75 (defun.gptel-curl--stream-cleanu
8d40 70 20 28 70 72 6f 63 65 73 73 20 5f 73 74 61 74 75 73 29 0a 20 20 22 50 72 6f 63 65 73 73 20 73 p.(process._status)..."Process.s
8d60 65 6e 74 69 6e 65 6c 20 66 6f 72 20 47 50 54 65 6c 20 63 75 72 6c 20 72 65 71 75 65 73 74 73 2e entinel.for.GPTel.curl.requests.
8d80 0a 0a 50 52 4f 43 45 53 53 20 61 6e 64 20 5f 53 54 41 54 55 53 20 61 72 65 20 70 72 6f 63 65 73 ..PROCESS.and._STATUS.are.proces
8da0 73 20 70 61 72 61 6d 65 74 65 72 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 s.parameters."...(let.((proc-buf
8dc0 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 .(process-buffer.process))).....
8de0 28 6c 65 74 2a 20 28 28 69 6e 66 6f 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 (let*.((info.(alist-get.process.
8e00 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 72 6f 63 65 73 73 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 gptel-curl--process-alist)).....
8e20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 .......(gptel-buffer.(plist-get.
8e40 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 info.:buffer))............(backe
8e60 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 nd-name.............(gptel-backe
8e80 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 nd-name..............(buffer-loc
8ea0 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 75 al-value.'gptel-backend.gptel-bu
8ec0 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 ffer)))............(tracking-mar
8ee0 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 ker.(plist-get.info.:tracking-ma
8f00 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 rker))............(start-marker.
8f20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 (plist-get.info.:position)).....
8f40 20 20 20 20 20 20 20 28 68 74 74 70 2d 73 74 61 74 75 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 .......(http-status.(plist-get.i
8f60 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 68 nfo.:http-status))............(h
8f80 74 74 70 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 ttp-msg.(plist-get.info.:status)
8fa0 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 28 )).......(when.gptel-log-level.(
8fc0 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 6c 6f 67 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 62 75 gptel-curl--log-response.proc-bu
8fe0 66 20 69 6e 66 6f 29 29 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d f.info)).;logging.......(if.(mem
9000 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 20 ber.http-status.'("200"."100")).
9020 3b 46 69 6e 69 73 68 20 68 61 6e 64 6c 69 6e 67 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 ;Finish.handling.response.......
9040 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 ....(with-current-buffer.gptel-b
9060 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 74 72 61 63 6b uffer.............(if.(not.track
9080 69 6e 67 2d 6d 61 72 6b 65 72 29 20 20 20 3b 45 6d 70 74 79 20 72 65 73 70 6f 6e 73 65 0a 20 20 ing-marker)...;Empty.response...
90a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28 ..............(when.gptel-mode.(
90c0 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 45 6d 70 74 79 20 72 65 73 gptel--update-status.".Empty.res
90e0 70 6f 6e 73 65 22 20 27 73 75 63 63 65 73 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ponse".'success))...............
9100 28 70 75 6c 73 65 2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 69 67 68 6c 69 67 68 74 2d 72 65 67 69 6f (pulse-momentary-highlight-regio
9120 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a n.start-marker.tracking-marker).
9140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 ..............(when.gptel-mode..
9160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 ...............(save-excursion.(
9180 67 6f 74 6f 2d 63 68 61 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 goto-char.tracking-marker)......
91a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 ...........................(inse
91c0 72 74 20 22 5c 6e 5c 6e 22 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 rt."\n\n".(gptel-prompt-prefix-s
91e0 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d tring))).................(gptel-
9200 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 20 22 20 52 65 61 64 79 22 20 27 73 75 63 63 65 73 -update-status..".Ready".'succes
9220 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 4f 72 20 43 61 70 74 75 72 65 20 65 72 72 6f s)))).........;;.Or.Capture.erro
9240 72 20 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d r.message.........(with-current-
9260 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d buffer.proc-buf...........(goto-
9280 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 61 char.(point-max))...........(sea
92a0 72 63 68 2d 62 61 63 6b 77 61 72 64 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 74 6f rch-backward.(plist-get.info.:to
92c0 6b 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 29 0a ken))...........(backward-char).
92e0 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 5f 20 2e 20 2c ..........(pcase-let*.((`(,_...,
9300 68 65 61 64 65 72 2d 73 69 7a 65 29 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 header-size).(read.(current-buff
9320 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 er)))........................(re
9340 73 70 6f 6e 73 65 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 68 65 61 64 65 72 2d sponse.(progn.(goto-char.header-
9360 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 size)...........................
9380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 ..............(condition-case.ni
93a0 6c 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 l.(gptel--json-read)............
93c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
93e0 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 29 29 29 0a 20 20 20 20 20 error.'json-read-error))))......
9400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 64 61 74 61 20 28 70 ..................(error-data.(p
9420 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 72 6f 72 29 29 29 0a 20 20 20 20 list-get.response.:error))).....
9440 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f ........(cond..............(erro
9460 72 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 r-data...............(if.(string
9480 70 20 65 72 72 6f 72 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p.error-data)...................
94a0 28 6d 65 73 73 61 67 65 20 22 25 73 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62 61 63 (message."%s.error:.(%s).%s".bac
94c0 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d 6d 73 67 20 65 72 72 6f 72 2d 64 61 74 61 29 0a 20 kend-name.http-msg.error-data)..
94e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 65 72 72 6f 72 ...............(when-let.((error
9500 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67 65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 6d 65 73 73 -msg.(plist-get.error-data.:mess
9520 61 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 age))).....................(mess
9540 61 67 65 20 22 25 73 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62 61 63 6b 65 6e 64 2d age."%s.error:.(%s).%s".backend-
9560 6e 61 6d 65 20 68 74 74 70 2d 6d 73 67 20 65 72 72 6f 72 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 name.http-msg.error-msg)).......
9580 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 65 72 72 6f 72 2d 74 79 70 65 ..........(when-let.((error-type
95a0 20 28 70 6c 69 73 74 2d 67 65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 74 79 70 65 29 29 29 0a .(plist-get.error-data.:type))).
95c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 74 74 70 2d 6d ....................(setq.http-m
95e0 73 67 20 28 63 6f 6e 63 61 74 20 22 28 22 20 20 68 74 74 70 2d 6d 73 67 20 22 29 20 22 20 28 73 sg.(concat."("..http-msg.").".(s
9600 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f 72 2d 74 79 70 65 29 29 29 29 29 29 0a 20 20 20 20 tring-trim.error-type)))))).....
9620 20 20 20 20 20 20 20 20 20 28 28 65 71 20 72 65 73 70 6f 6e 73 65 20 27 6a 73 6f 6e 2d 72 65 61 .........((eq.response.'json-rea
9640 64 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 d-error)...............(message.
9660 22 25 73 20 65 72 72 6f 72 20 28 25 73 29 3a 20 4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 "%s.error.(%s):.Malformed.JSON.i
9680 6e 20 72 65 73 70 6f 6e 73 65 2e 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d 6d n.response.".backend-name.http-m
96a0 73 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 6d 65 73 73 61 67 65 20 22 25 sg))..............(t.(message."%
96c0 73 20 65 72 72 6f 72 20 28 25 73 29 3a 20 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 s.error.(%s):.Could.not.parse.HT
96e0 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d TP.response.".backend-name.http-
9700 6d 73 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 msg))))).........(with-current-b
9720 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 uffer.gptel-buffer...........(wh
9740 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c en.gptel-mode.............(gptel
9760 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f --update-status..............(fo
9780 72 6d 61 74 20 22 20 52 65 73 70 6f 6e 73 65 20 45 72 72 6f 72 3a 20 25 73 22 20 68 74 74 70 2d rmat.".Response.Error:.%s".http-
97a0 6d 73 67 29 20 27 65 72 72 6f 72 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 52 75 6e 20 68 6f 6f msg).'error)))).......;;.Run.hoo
97c0 6b 20 69 6e 20 76 69 73 69 62 6c 65 20 77 69 6e 64 6f 77 20 74 6f 20 73 65 74 20 77 69 6e 64 6f k.in.visible.window.to.set.windo
97e0 77 2d 70 6f 69 6e 74 2c 20 42 55 47 20 23 32 36 39 0a 20 20 20 20 20 20 28 69 66 2d 6c 65 74 20 w-point,.BUG.#269.......(if-let.
9800 28 28 67 70 74 65 6c 2d 77 69 6e 64 6f 77 20 28 67 65 74 2d 62 75 66 66 65 72 2d 77 69 6e 64 6f ((gptel-window.(get-buffer-windo
9820 77 20 67 70 74 65 6c 2d 62 75 66 66 65 72 20 27 76 69 73 69 62 6c 65 29 29 29 0a 20 20 20 20 20 w.gptel-buffer.'visible)))......
9840 20 20 20 20 20 28 77 69 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 67 70 74 65 6c .....(with-selected-window.gptel
9860 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 2d 77 69 -window.............(run-hook-wi
9880 74 68 2d 61 72 67 73 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e th-args.'gptel-post-response-fun
98a0 63 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ctions..........................
98c0 20 20 20 20 20 20 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 .......(marker-position.start-ma
98e0 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rker)...........................
9900 20 20 20 20 20 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 28 6f 72 20 74 72 61 63 6b ......(marker-position.(or.track
9920 69 6e 67 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 29 29 0a 20 20 20 20 ing-marker.start-marker)))).....
9940 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 ....(with-current-buffer.gptel-b
9960 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 2d 77 69 74 68 2d 61 uffer...........(run-hook-with-a
9980 72 67 73 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f rgs.'gptel-post-response-functio
99a0 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ns..............................
99c0 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a .(marker-position.start-marker).
99e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d ..............................(m
9a00 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 28 6f 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b arker-position.(or.tracking-mark
9a20 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 29 29 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 er.start-marker)))))).....(setf.
9a40 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 (alist-get.process.gptel-curl--p
9a60 72 6f 63 65 73 73 2d 61 6c 69 73 74 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 rocess-alist.nil.'remove).nil)..
9a80 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 29 29 29 0a 0a 28 64 65 ...(kill-buffer.proc-buf)))..(de
9aa0 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 fun.gptel-curl--stream-insert-re
9ac0 73 70 6f 6e 73 65 20 28 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 22 49 6e 73 65 72 74 sponse.(response.info)..."Insert
9ae0 20 73 74 72 65 61 6d 69 6e 67 20 52 45 53 50 4f 4e 53 45 20 66 72 6f 6d 20 61 6e 20 4c 4c 4d 20 .streaming.RESPONSE.from.an.LLM.
9b00 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 2e 0a 0a 49 4e 46 4f 20 69 73 20 into.the.gptel.buffer...INFO.is.
9b20 61 20 6d 75 74 61 62 6c 65 20 70 6c 69 73 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 a.mutable.plist.containing.infor
9b40 6d 61 74 69 6f 6e 20 72 65 6c 65 76 61 6e 74 20 74 6f 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a mation.relevant.to.this.buffer..
9b60 53 65 65 20 60 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f See.`gptel--url-get-response'.fo
9b80 72 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 74 61 72 74 2d 6d 61 72 6b 65 r.details."...(let.((start-marke
9ba0 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 r.(plist-get.info.:position))...
9bc0 20 20 20 20 20 20 28 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 ......(tracking-marker.(plist-ge
9be0 74 20 69 6e 66 6f 20 3a 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 t.info.:tracking-marker)).......
9c00 20 20 28 74 72 61 6e 73 66 6f 72 6d 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a ..(transformer.(plist-get.info.:
9c20 74 72 61 6e 73 66 6f 72 6d 65 72 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 72 65 73 70 6f 6e 73 transformer))).....(when.respons
9c40 65 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 e.........(with-current-buffer.(
9c60 6d 61 72 6b 65 72 2d 62 75 66 66 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 marker-buffer.start-marker).....
9c80 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 ......(save-excursion...........
9ca0 20 20 28 75 6e 6c 65 73 73 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 ..(unless.tracking-marker.......
9cc0 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 ........(gptel--update-status.".
9ce0 54 79 70 69 6e 67 2e 2e 2e 22 20 27 73 75 63 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 Typing...".'success)............
9d00 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 ...(goto-char.start-marker).....
9d20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 62 6f 62 70 29 20 28 70 6c ..........(unless.(or.(bobp).(pl
9d40 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 69 6e 2d 70 6c 61 63 65 29 29 0a 20 20 20 20 20 20 20 ist-get.info.:in-place))........
9d60 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 5c 6e 5c 6e 22 29 0a 20 20 20 20 20 20 20 .........(insert."\n\n")........
9d80 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 .........(when.gptel-mode.......
9da0 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 50 75 74 20 70 72 65 66 69 78 20 62 65 66 6f 72 65 ............;;.Put.prefix.before
9dc0 20 41 49 20 72 65 73 70 6f 6e 73 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .AI.response....................
9de0 28 69 6e 73 65 72 74 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 (insert.(gptel-response-prefix-s
9e00 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d tring))).................(move-m
9e20 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 arker.start-marker.(point)))....
9e40 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 ...........(setq.tracking-marker
9e60 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 28 70 6f 69 6e .(set-marker.(make-marker).(poin
9e80 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 2d 69 t)))...............(set-marker-i
9ea0 6e 73 65 72 74 69 6f 6e 2d 74 79 70 65 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 29 nsertion-type.tracking-marker.t)
9ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a ...............(plist-put.info.:
9ee0 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 tracking-marker.tracking-marker)
9f00 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e )..........................(when
9f20 20 74 72 61 6e 73 66 6f 72 6d 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 .transformer...............(setq
9f40 20 72 65 73 70 6f 6e 73 65 20 28 66 75 6e 63 61 6c 6c 20 74 72 61 6e 73 66 6f 72 6d 65 72 20 72 .response.(funcall.transformer.r
9f60 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 esponse)))......................
9f80 20 20 20 20 28 70 75 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 0a 20 20 20 20 20 20 20 20 20 ....(put-text-property..........
9fa0 20 20 20 20 30 20 28 6c 65 6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 20 27 67 70 74 65 6c 20 27 ....0.(length.response).'gptel.'
9fc0 72 65 73 70 6f 6e 73 65 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 response.response).............(
9fe0 67 6f 74 6f 2d 63 68 61 72 20 74 72 61 63 6b 69 6e 67 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 goto-char.tracking-marker)......
a000 20 20 20 20 20 20 20 3b 3b 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 72 65 2d .......;;.(run-hooks.'gptel-pre-
a020 73 74 72 65 61 6d 2d 68 6f 6f 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 stream-hook).............(insert
a040 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b .response).............(run-hook
a060 73 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 29 29 29 29 29 29 0a s.'gptel-post-stream-hook)))))).
a080 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 74 72 65 61 6d 2d 66 69 6c 74 65 .(defun.gptel-curl--stream-filte
a0a0 72 20 28 70 72 6f 63 65 73 73 20 6f 75 74 70 75 74 29 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f r.(process.output)...(let*.((pro
a0c0 63 2d 69 6e 66 6f 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74 65 6c 2d c-info.(alist-get.process.gptel-
a0e0 63 75 72 6c 2d 2d 70 72 6f 63 65 73 73 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 28 77 69 74 68 curl--process-alist))).....(with
a100 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 -current-buffer.(process-buffer.
a120 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 6f 75 74 70 75 74 0a process).......;;.Insert.output.
a140 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 28 67 ......(save-excursion.........(g
a160 6f 74 6f 2d 63 68 61 72 20 28 70 72 6f 63 65 73 73 2d 6d 61 72 6b 20 70 72 6f 63 65 73 73 29 29 oto-char.(process-mark.process))
a180 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 6f 75 74 70 75 74 29 0a 20 20 20 20 20 20 20 .........(insert.output)........
a1a0 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 28 70 72 6f 63 65 73 73 2d 6d 61 72 6b 20 70 72 6f 63 65 .(set-marker.(process-mark.proce
a1c0 73 73 29 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 0a 20 20 20 20 20 20 3b 3b 20 46 69 ss).(point)))..............;;.Fi
a1e0 6e 64 20 48 54 54 50 20 73 74 61 74 75 73 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 70 6c nd.HTTP.status.......(unless.(pl
a200 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 0a ist-get.proc-info.:http-status).
a220 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 ........(save-excursion.........
a240 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 ..(goto-char.(point-min)).......
a260 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 28 6e 6f 74 20 28 3d 20 28 6c 69 6e 65 2d 65 ....(when-let*.(((not.(=.(line-e
a280 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 nd-position).(point-max)))).....
a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 6d 73 67 20 28 62 75 66 ..................(http-msg.(buf
a2c0 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f fer-substring.(line-beginning-po
a2e0 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sition).........................
a300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 65 2d ..........................(line-
a320 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 end-position))).................
a340 20 20 20 20 20 20 28 68 74 74 70 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ......(http-status..............
a360 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 ..........(save-match-data......
a380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73 74 72 69 6e 67 ....................(and.(string
a3a0 2d 6d 61 74 63 68 20 22 48 54 54 50 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c 28 5b 30 2d 39 5d 2b 5c -match."HTTP/[.0-9]+.+\\([0-9]+\
a3c0 5c 29 22 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \)".http-msg)...................
a3e0 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 74 74 70 ............(match-string.1.http
a400 2d 6d 73 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 -msg))))).............(plist-put
a420 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 20 68 74 74 70 2d 73 74 61 .proc-info.:http-status.http-sta
a440 74 75 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 tus).............(plist-put.proc
a460 2d 69 6e 66 6f 20 3a 73 74 61 74 75 73 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 68 74 74 70 2d -info.:status.(string-trim.http-
a480 6d 73 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 72 65 61 64 2d 6f msg)))).........;;.Handle.read-o
a4a0 6e 6c 79 20 67 70 74 65 6c 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 nly.gptel.buffer.........(when.(
a4c0 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 70 with-current-buffer.(plist-get.p
a4e0 72 6f 63 2d 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 roc-info.:buffer)...............
a500 20 20 28 6f 72 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 ..(or.buffer-read-only..........
a520 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 ...........(get-char-property.(p
a540 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 20 27 72 list-get.proc-info.:position).'r
a560 65 61 64 2d 6f 6e 6c 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 ead-only)))...........(message."
a580 42 75 66 66 65 72 20 69 73 20 72 65 61 64 20 6f 6e 6c 79 2c 20 64 69 73 70 6c 61 79 69 6e 67 20 Buffer.is.read.only,.displaying.
a5a0 72 65 70 6c 79 20 69 6e 20 62 75 66 66 65 72 20 5c 22 2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a reply.in.buffer.\"*LLM.response*
a5c0 5c 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 \"")...........(display-buffer..
a5e0 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 ..........(with-current-buffer.(
a600 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 get-buffer-create."*LLM.response
a620 2a 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f *")..............(visual-line-mo
a640 64 65 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 de.1)..............(goto-char.(p
a660 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6d 61 oint-max))..............(move-ma
a680 72 6b 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 70 6f 73 69 74 rker.(plist-get.proc-info.:posit
a6a0 69 6f 6e 29 20 28 70 6f 69 6e 74 29 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 ion).(point).(current-buffer))..
a6c0 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 ............(current-buffer))...
a6e0 20 20 20 20 20 20 20 20 20 27 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 72 65 75 73 65 .........'((display-buffer-reuse
a700 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 2d 62 75 -window...............display-bu
a720 66 66 65 72 2d 70 6f 70 2d 75 70 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ffer-pop-up-window).............
a740 20 28 72 65 75 73 61 62 6c 65 2d 66 72 61 6d 65 73 20 2e 20 76 69 73 69 62 6c 65 29 29 29 29 0a .(reusable-frames...visible)))).
a760 20 20 20 20 20 20 20 20 3b 3b 20 52 75 6e 20 70 72 65 2d 72 65 73 70 6f 6e 73 65 20 68 6f 6f 6b ........;;.Run.pre-response.hook
a780 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 6d 65 6d 62 65 72 20 28 70 6c 69 .........(when.(and.(member.(pli
a7a0 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 20 27 st-get.proc-info.:http-status).'
a7c0 28 22 32 30 30 22 20 22 31 30 30 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ("200"."100"))..................
a7e0 20 20 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 29 0a 20 20 20 20 20 ..gptel-pre-response-hook)......
a800 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 .....(with-current-buffer.(marke
a820 72 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 70 r-buffer.(plist-get.proc-info.:p
a840 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 osition)).............(run-hooks
a860 20 27 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 29 29 29 29 0a 20 20 .'gptel-pre-response-hook))))...
a880 20 20 20 20 0a 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 68 74 74 70 2d 6d 73 67 20 ...........(when-let.((http-msg.
a8a0 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 0a 20 (plist-get.proc-info.:status))..
a8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 73 74 61 74 75 73 20 28 70 6c ................(http-status.(pl
a8e0 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 68 74 74 70 2d 73 74 61 74 75 73 29 29 ist-get.proc-info.:http-status))
a900 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 46 69 6e 64 20 64 61 74 61 20 63 68 75 6e 6b 28 73 29 20 ).........;;.Find.data.chunk(s).
a920 61 6e 64 20 72 75 6e 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d and.run.callback.........;;.FIXM
a940 45 20 48 61 6e 64 6c 65 20 74 68 65 20 63 61 73 65 20 77 68 65 72 65 20 48 54 54 50 20 31 30 30 E.Handle.the.case.where.HTTP.100
a960 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 48 54 54 50 20 28 6e 6f 74 20 32 30 30 29 20 42 .is.followed.by.HTTP.(not.200).B
a980 55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 28 6d 65 6d UG.#194.........(when-let.(((mem
a9a0 62 65 72 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 29 ber.http-status.'("200"."100")))
a9c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 28 66 ....................(response.(f
a9e0 75 6e 63 61 6c 6c 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 70 61 72 uncall.(plist-get.proc-info.:par
aa00 73 65 72 29 20 6e 69 6c 20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ser).nil.proc-info))............
aa20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 65 71 75 61 6c 20 72 65 73 70 6f 6e 73 65 20 22 22 ........((not.(equal.response.""
aa40 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 20 28 70 6c 69 ))))...........(funcall.(or.(pli
aa60 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 0a 20 20 20 20 st-get.proc-info.:callback).....
aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d ...................#'gptel-curl-
aaa0 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 -stream-insert-response)........
aac0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 ............response.proc-info))
aae0 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d 63 75 72 6c 2d ))))..(cl-defgeneric.gptel-curl-
ab00 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 63 2d 69 6e 66 6f -parse-stream.(backend.proc-info
ab20 29 0a 20 20 22 53 74 72 65 61 6d 20 70 61 72 73 65 72 20 66 6f 72 20 67 70 74 65 6c 2d 63 75 72 )..."Stream.parser.for.gptel-cur
ab40 6c 2e 0a 0a 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 66 75 6e 63 l...Implementations.of.this.func
ab60 74 69 6f 6e 20 72 75 6e 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73 73 0a tion.run.as.part.of.the.process.
ab80 66 69 6c 74 65 72 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 71 75 65 72 79 2c 20 61 6e 64 filter.for.the.active.query,.and
aba0 20 72 65 74 75 72 6e 20 70 61 72 74 69 61 6c 20 72 65 73 70 6f 6e 73 65 73 20 66 72 6f 6d 0a 74 .return.partial.responses.from.t
abc0 68 65 20 4c 4c 4d 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b he.LLM...BACKEND.is.the.LLM.back
abe0 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 end.in.use...PROC-INFO.is.a.plis
ac00 74 20 77 69 74 68 20 70 72 6f 63 65 73 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64 20 6f t.with.process.information.and.o
ac20 74 68 65 72 20 63 6f 6e 74 65 78 74 2e 0a 53 65 65 20 60 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 ther.context..See.`gptel-curl--g
ac40 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 2e 22 29 et-response'.for.its.contents.")
ac60 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 73 65 6e 74 69 6e 65 6c 20 28 70 ..(defun.gptel-curl--sentinel.(p
ac80 72 6f 63 65 73 73 20 5f 73 74 61 74 75 73 29 0a 20 20 22 50 72 6f 63 65 73 73 20 73 65 6e 74 69 rocess._status)..."Process.senti
aca0 6e 65 6c 20 66 6f 72 20 67 70 74 65 6c 20 63 75 72 6c 20 72 65 71 75 65 73 74 73 2e 0a 0a 50 52 nel.for.gptel.curl.requests...PR
acc0 4f 43 45 53 53 20 61 6e 64 20 5f 53 54 41 54 55 53 20 61 72 65 20 70 72 6f 63 65 73 73 20 70 61 OCESS.and._STATUS.are.process.pa
ace0 72 61 6d 65 74 65 72 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 63 2d 62 75 66 20 28 70 72 rameters."...(let.((proc-buf.(pr
ad00 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 28 77 68 65 ocess-buffer.process))).....(whe
ad20 6e 2d 6c 65 74 2a 20 28 28 28 65 71 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 70 72 6f n-let*.(((eq.(process-status.pro
ad40 63 65 73 73 29 20 27 65 78 69 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 cess).'exit)).................(p
ad60 72 6f 63 2d 69 6e 66 6f 20 28 61 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 65 73 73 20 67 70 74 65 roc-info.(alist-get.process.gpte
ad80 6c 2d 63 75 72 6c 2d 2d 70 72 6f 63 65 73 73 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 l-curl--process-alist)).........
ada0 20 20 20 20 20 20 20 20 28 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 20 28 70 6c 69 73 74 2d 67 65 ........(proc-callback.(plist-ge
adc0 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 63 61 6c 6c 62 61 63 6b 29 29 29 0a 20 20 20 20 20 20 28 t.proc-info.:callback))).......(
ade0 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 28 67 70 74 65 6c 2d 63 75 72 6c when.gptel-log-level.(gptel-curl
ae00 2d 2d 6c 6f 67 2d 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 62 75 66 20 70 72 6f 63 2d 69 6e 66 --log-response.proc-buf.proc-inf
ae20 6f 29 29 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 o)).;logging.......(pcase-let.((
ae40 60 28 2c 72 65 73 70 6f 6e 73 65 20 2c 68 74 74 70 2d 6d 73 67 20 2c 65 72 72 6f 72 29 0a 20 20 `(,response.,http-msg.,error)...
ae60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 .................(with-current-b
ae80 75 66 66 65 72 20 70 72 6f 63 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uffer.proc-buf..................
aea0 20 20 20 20 28 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 ....(gptel-curl--parse-response.
aec0 70 72 6f 63 2d 69 6e 66 6f 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 proc-info)))).........(plist-put
aee0 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 73 74 61 74 75 73 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 .proc-info.:status.http-msg)....
af00 20 20 20 20 20 28 77 68 65 6e 20 65 72 72 6f 72 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 63 .....(when.error.(plist-put.proc
af20 2d 69 6e 66 6f 20 3a 65 72 72 6f 72 20 65 72 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 28 66 75 -info.:error.error)).........(fu
af40 6e 63 61 6c 6c 20 70 72 6f 63 2d 63 61 6c 6c 62 61 63 6b 20 72 65 73 70 6f 6e 73 65 20 70 72 6f ncall.proc-callback.response.pro
af60 63 2d 69 6e 66 6f 29 29 29 0a 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 70 c-info))).....(setf.(alist-get.p
af80 72 6f 63 65 73 73 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 72 6f 63 65 73 73 2d 61 6c 69 73 74 rocess.gptel-curl--process-alist
afa0 20 6e 69 6c 20 27 72 65 6d 6f 76 65 29 20 6e 69 6c 29 0a 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 .nil.'remove).nil).....(kill-buf
afc0 66 65 72 20 70 72 6f 63 2d 62 75 66 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 63 75 fer.proc-buf)))..(defun.gptel-cu
afe0 72 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 rl--parse-response.(proc-info)..
b000 20 22 50 61 72 73 65 20 74 68 65 20 62 75 66 66 65 72 20 42 55 46 20 77 69 74 68 20 63 75 72 6c ."Parse.the.buffer.BUF.with.curl
b020 27 73 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 50 52 4f 43 2d 49 4e 46 4f 20 69 73 20 61 20 70 6c 69 's.response...PROC-INFO.is.a.pli
b040 73 74 20 77 69 74 68 20 63 6f 6e 74 65 78 74 75 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 22 st.with.contextual.information."
b060 0a 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d ...(let.((token.(plist-get.proc-
b080 69 6e 66 6f 20 3a 74 6f 6b 65 6e 29 29 0a 20 20 20 20 20 20 20 20 28 70 61 72 73 65 72 20 28 70 info.:token)).........(parser.(p
b0a0 6c 69 73 74 2d 67 65 74 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 70 61 72 73 65 72 29 29 29 0a 20 20 list-get.proc-info.:parser)))...
b0c0 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 73 ..(goto-char.(point-max)).....(s
b0e0 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 74 6f 6b 65 6e 29 0a 20 20 20 20 28 62 61 63 6b 77 earch-backward.token).....(backw
b100 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 5f ard-char).....(pcase-let*.((`(,_
b120 20 2e 20 2c 68 65 61 64 65 72 2d 73 69 7a 65 29 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d ...,header-size).(read.(current-
b140 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 buffer)))).......(goto-char.(poi
b160 6e 74 2d 6d 69 6e 29 29 0a 0a 20 20 20 20 20 20 28 69 66 2d 6c 65 74 2a 20 28 28 68 74 74 70 2d nt-min))........(if-let*.((http-
b180 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 msg.(string-trim................
b1a0 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c ............(buffer-substring.(l
b1c0 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 ine-beginning-position).........
b1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
b200 20 20 20 20 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 0a 20 20 20 20 .....(line-end-position)))).....
b220 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 ............(http-status........
b240 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 ..........(save-match-data......
b260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 ..............(and.(string-match
b280 20 22 48 54 54 50 2f 5b 2e 30 2d 39 5d 2b 20 2b 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 22 20 68 74 ."HTTP/[.0-9]+.+\\([0-9]+\\)".ht
b2a0 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tp-msg).........................
b2c0 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 74 74 70 2d 6d 73 67 29 29 29 29 0a 20 20 20 (match-string.1.http-msg))))....
b2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 28 70 72 6f 67 6e 20 28 67 .............(response.(progn.(g
b300 6f 74 6f 2d 63 68 61 72 20 68 65 61 64 65 72 2d 73 69 7a 65 29 0a 20 20 20 20 20 20 20 20 20 20 oto-char.header-size)...........
b320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f .......................(conditio
b340 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n-case.nil......................
b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 ................(gptel--json-rea
b380 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d)..............................
b3a0 20 20 20 20 20 20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 29 29 ......(error.'json-read-error)))
b3c0 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b ))...........(cond............;;
b3e0 20 46 49 58 4d 45 20 48 61 6e 64 6c 65 20 74 68 65 20 63 61 73 65 20 77 68 65 72 65 20 48 54 54 .FIXME.Handle.the.case.where.HTT
b400 50 20 31 30 30 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 48 54 54 50 20 28 6e 6f 74 20 32 P.100.is.followed.by.HTTP.(not.2
b420 30 30 29 20 42 55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 00).BUG.#194............((member
b440 20 68 74 74 70 2d 73 74 61 74 75 73 20 27 28 22 32 30 30 22 20 22 31 30 30 22 29 29 0a 20 20 20 .http-status.'("200"."100"))....
b460 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20 20 20 .........(list.(string-trim.....
b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 61 72 73 65 72 20 6e ...............(funcall.parser.n
b4a0 69 6c 20 72 65 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 29 0a 20 20 20 20 20 20 20 20 il.response.proc-info)).........
b4c0 20 20 20 20 20 20 20 20 20 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ..........http-msg))............
b4e0 28 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 72 6f 72 29 0a 20 20 20 ((plist-get.response.:error)....
b500 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 65 72 72 6f 72 2d 64 61 74 61 20 28 70 6c 69 .........(let*.((error-data.(pli
b520 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 72 6f 72 29 29 0a 20 20 20 20 20 20 20 st-get.response.:error))........
b540 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 6d 73 67 20 28 70 6c 69 73 74 2d 67 65 ............(error-msg.(plist-ge
b560 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 20 20 20 20 t.error-data.:message)).........
b580 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 74 79 70 65 20 28 70 6c 69 73 74 2d 67 65 ...........(error-type.(plist-ge
b5a0 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 74 79 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 t.error-data.:type))............
b5c0 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 ........(backend-name...........
b5e0 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 ..........(gptel-backend-name...
b600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c ...................(buffer-local
b620 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 70 6c 69 73 74 2d 67 65 74 -value.'gptel-backend.(plist-get
b640 20 70 72 6f 63 2d 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 .proc-info.:buffer))))).........
b660 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 65 72 72 6f 72 2d 64 61 74 61 29 0a 20 ......(if.(stringp.error-data)..
b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 6d 65 73 73 61 67 65 .................(progn.(message
b6a0 20 22 25 73 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d ."%s.error:.(%s).%s".backend-nam
b6c0 65 20 68 74 74 70 2d 6d 73 67 20 65 72 72 6f 72 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 e.http-msg.error-data)..........
b6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 72 72 6f 72 2d 6d 73 67 20 ................(setq.error-msg.
b700 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f 72 2d 64 61 74 61 29 29 29 0a 20 20 20 20 20 (string-trim.error-data)))......
b720 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 65 72 72 6f 72 2d ...........(when.(stringp.error-
b740 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 msg)...................(message.
b760 22 25 73 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 "%s.error:.(%s).%s".backend-name
b780 20 68 74 74 70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f 72 2d 6d 73 67 .http-msg.(string-trim.error-msg
b7a0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 65 72 72 6f 72 2d ))).................(when.error-
b7c0 74 79 70 65 20 28 73 65 74 71 20 68 74 74 70 2d 6d 73 67 20 28 63 6f 6e 63 61 74 20 22 28 22 20 type.(setq.http-msg.(concat."(".
b7e0 20 68 74 74 70 2d 6d 73 67 20 22 29 20 22 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f .http-msg.").".(string-trim.erro
b800 72 2d 74 79 70 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 r-type)))))...............(list.
b820 6e 69 6c 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 22 20 28 6f nil.(concat."(".http-msg.").".(o
b840 72 20 65 72 72 6f 72 2d 6d 73 67 20 22 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 r.error-msg."")))))............(
b860 28 65 71 20 72 65 73 70 6f 6e 73 65 20 27 6a 73 6f 6e 2d 72 65 61 64 2d 65 72 72 6f 72 29 0a 20 (eq.response.'json-read-error)..
b880 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 28 63 6f 6e 63 61 74 20 22 28 22 ...........(list.nil.(concat."("
b8a0 20 68 74 74 70 2d 6d 73 67 20 22 29 20 4d 61 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20 72 .http-msg.").Malformed.JSON.in.r
b8c0 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4d 61 esponse.")..................."Ma
b8e0 6c 66 6f 72 6d 65 64 20 4a 53 4f 4e 20 69 6e 20 72 65 73 70 6f 6e 73 65 22 29 29 0a 20 20 20 20 lformed.JSON.in.response")).....
b900 20 20 20 20 20 20 20 28 74 20 28 6c 69 73 74 20 6e 69 6c 20 28 63 6f 6e 63 61 74 20 22 28 22 20 .......(t.(list.nil.(concat."(".
b920 68 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 http-msg.").Could.not.parse.HTTP
b940 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .response.")....................
b960 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e ."Could.not.parse.HTTP.response.
b980 22 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 28 63 6f 6e 63 61 74 20 22 "))).........(list.nil.(concat."
b9a0 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 (".http-msg.").Could.not.parse.H
b9c0 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 TTP.response.")..............."C
b9e0 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 ould.not.parse.HTTP.response."))
ba00 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 63 75 72 6c 29 0a 3b 3b 3b 20 67 )))..(provide.'gptel-curl).;;;.g
ba20 70 74 65 6c 2d 63 75 72 6c 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 ptel-curl.el.ends.here..........
ba40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ba80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
baa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc00 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2e 65 6c 00 00 00 00 gptel-20240424.2306/gptel.el....
bc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bc60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
bc80 30 31 34 36 36 31 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 36 36 00 20 30 00 00 00 0146611.00000000000.013566..0...
bca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
bd20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
bd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be00 3b 3b 3b 20 67 70 74 65 6c 2e 65 6c 20 2d 2d 2d 20 49 6e 74 65 72 61 63 74 20 77 69 74 68 20 43 ;;;.gptel.el.---.Interact.with.C
be20 68 61 74 47 50 54 20 6f 72 20 6f 74 68 65 72 20 4c 4c 4d 73 20 20 20 20 20 2d 2a 2d 20 6c 65 78 hatGPT.or.other.LLMs.....-*-.lex
be40 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 ical-binding:.t;.-*-..;;.Copyrig
be60 68 74 20 28 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 ht.(C).2023..Karthik.Chikmagalur
be80 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 ..;;.Author:.Karthik.Chikmagalur
bea0 0a 3b 3b 20 56 65 72 73 69 6f 6e 3a 20 30 2e 38 2e 35 0a 3b 3b 20 50 61 63 6b 61 67 65 2d 52 65 .;;.Version:.0.8.5.;;.Package-Re
bec0 71 75 69 72 65 73 3a 20 28 28 65 6d 61 63 73 20 22 32 37 2e 31 22 29 20 28 74 72 61 6e 73 69 65 quires:.((emacs."27.1").(transie
bee0 6e 74 20 22 30 2e 34 2e 30 22 29 20 28 63 6f 6d 70 61 74 20 22 32 39 2e 31 2e 34 2e 31 22 29 29 nt."0.4.0").(compat."29.1.4.1"))
bf00 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 63 6f 6e 76 65 6e 69 65 6e 63 65 0a 3b 3b 20 55 52 4c .;;.Keywords:.convenience.;;.URL
bf20 3a 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 68 69 6e 6b 2f 67 70 :.https://github.com/karthink/gp
bf40 74 65 6c 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a tel..;;.SPDX-License-Identifier:
bf60 20 47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c 61 74 65 72 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 .GPL-3.0-or-later..;;.This.progr
bf80 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 am.is.free.software;.you.can.red
bfa0 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 istribute.it.and/or.modify.;;.it
bfc0 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 .under.the.terms.of.the.GNU.Gene
bfe0 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 ral.Public.License.as.published.
c000 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 by.;;.the.Free.Software.Foundati
c020 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 on,.either.version.3.of.the.Lice
c040 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 nse,.or.;;.(at.your.option).any.
c060 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 later.version...;;.This.program.
c080 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 is.distributed.in.the.hope.that.
c0a0 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 it.will.be.useful,.;;.but.WITHOU
c0c0 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 T.ANY.WARRANTY;.without.even.the
c0e0 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 .implied.warranty.of.;;.MERCHANT
c100 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 ABILITY.or.FITNESS.FOR.A.PARTICU
c120 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e LAR.PURPOSE...See.the.;;.GNU.Gen
c140 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 eral.Public.License.for.more.det
c160 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 ails...;;.You.should.have.receiv
c180 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 ed.a.copy.of.the.GNU.General.Pub
c1a0 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 lic.License.;;.along.with.this.p
c1c0 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 rogram...If.not,.see.<https://ww
c1e0 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 20 54 68 69 73 20 66 w.gnu.org/licenses/>...;;.This.f
c200 69 6c 65 20 69 73 20 4e 4f 54 20 70 61 72 74 20 6f 66 20 47 4e 55 20 45 6d 61 63 73 2e 0a 0a 3b ile.is.NOT.part.of.GNU.Emacs...;
c220 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 67 70 74 65 6c 20 69 73 20 61 20 73 69 ;;.Commentary:..;;.gptel.is.a.si
c240 6d 70 6c 65 20 4c 61 72 67 65 20 4c 61 6e 67 75 61 67 65 20 4d 6f 64 65 6c 20 63 68 61 74 20 63 mple.Large.Language.Model.chat.c
c260 6c 69 65 6e 74 2c 20 77 69 74 68 20 73 75 70 70 6f 72 74 20 66 6f 72 20 6d 75 6c 74 69 70 6c 65 lient,.with.support.for.multiple
c280 20 6d 6f 64 65 6c 73 2f 62 61 63 6b 65 6e 64 73 2e 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 73 75 .models/backends..;;.;;.gptel.su
c2a0 70 70 6f 72 74 73 0a 3b 3b 0a 3b 3b 20 2d 20 54 68 65 20 73 65 72 76 69 63 65 73 20 43 68 61 74 pports.;;.;;.-.The.services.Chat
c2c0 47 50 54 2c 20 41 7a 75 72 65 2c 20 47 65 6d 69 6e 69 2c 20 41 6e 74 68 72 6f 70 69 63 20 41 49 GPT,.Azure,.Gemini,.Anthropic.AI
c2e0 2c 20 41 6e 79 73 63 61 6c 65 2c 20 54 6f 67 65 74 68 65 72 2e 61 69 2c 0a 3b 3b 20 20 20 50 65 ,.Anyscale,.Together.ai,.;;...Pe
c300 72 70 6c 65 78 69 74 79 2c 20 61 6e 64 20 4b 61 67 69 20 28 46 61 73 74 47 50 54 20 26 20 53 75 rplexity,.and.Kagi.(FastGPT.&.Su
c320 6d 6d 61 72 69 7a 65 72 29 0a 3b 3b 20 2d 20 4c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 76 69 61 20 mmarizer).;;.-.Local.models.via.
c340 4f 6c 6c 61 6d 61 2c 20 4c 6c 61 6d 61 2e 63 70 70 2c 20 4c 6c 61 6d 61 66 69 6c 65 73 20 6f 72 Ollama,.Llama.cpp,.Llamafiles.or
c360 20 47 50 54 34 41 6c 6c 0a 3b 3b 0a 3b 3b 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 61 6e .GPT4All.;;.;;..Additionally,.an
c380 79 20 4c 4c 4d 20 73 65 72 76 69 63 65 20 28 6c 6f 63 61 6c 20 6f 72 20 72 65 6d 6f 74 65 29 20 y.LLM.service.(local.or.remote).
c3a0 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 61 6e 0a 3b 3b 20 20 4f 70 65 6e 41 49 2d 63 6f 6d 70 that.provides.an.;;..OpenAI-comp
c3c0 61 74 69 62 6c 65 20 41 50 49 20 69 73 20 73 75 70 70 6f 72 74 65 64 2e 0a 3b 3b 0a 3b 3b 20 46 atible.API.is.supported..;;.;;.F
c3e0 65 61 74 75 72 65 73 3a 0a 3b 3b 20 2d 20 49 74 e2 80 99 73 20 61 73 79 6e 63 20 61 6e 64 20 66 eatures:.;;.-.It...s.async.and.f
c400 61 73 74 2c 20 73 74 72 65 61 6d 73 20 72 65 73 70 6f 6e 73 65 73 2e 0a 3b 3b 20 2d 20 49 6e 74 ast,.streams.responses..;;.-.Int
c420 65 72 61 63 74 20 77 69 74 68 20 4c 4c 4d 73 20 66 72 6f 6d 20 61 6e 79 77 68 65 72 65 20 69 6e eract.with.LLMs.from.anywhere.in
c440 20 45 6d 61 63 73 20 28 61 6e 79 20 62 75 66 66 65 72 2c 20 73 68 65 6c 6c 2c 20 6d 69 6e 69 62 .Emacs.(any.buffer,.shell,.minib
c460 75 66 66 65 72 2c 0a 3b 3b 20 20 20 77 68 65 72 65 76 65 72 29 0a 3b 3b 20 2d 20 4c 4c 4d 20 72 uffer,.;;...wherever).;;.-.LLM.r
c480 65 73 70 6f 6e 73 65 73 20 61 72 65 20 69 6e 20 4d 61 72 6b 64 6f 77 6e 20 6f 72 20 4f 72 67 20 esponses.are.in.Markdown.or.Org.
c4a0 6d 61 72 6b 75 70 2e 0a 3b 3b 20 2d 20 53 75 70 70 6f 72 74 73 20 63 6f 6e 76 65 72 73 61 74 69 markup..;;.-.Supports.conversati
c4c0 6f 6e 73 20 61 6e 64 20 6d 75 6c 74 69 70 6c 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 73 65 73 ons.and.multiple.independent.ses
c4e0 73 69 6f 6e 73 2e 0a 3b 3b 20 2d 20 53 61 76 65 20 63 68 61 74 73 20 61 73 20 72 65 67 75 6c 61 sions..;;.-.Save.chats.as.regula
c500 72 20 4d 61 72 6b 64 6f 77 6e 2f 4f 72 67 2f 54 65 78 74 20 66 69 6c 65 73 20 61 6e 64 20 72 65 r.Markdown/Org/Text.files.and.re
c520 73 75 6d 65 20 74 68 65 6d 20 6c 61 74 65 72 2e 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 67 6f sume.them.later..;;.-.You.can.go
c540 20 62 61 63 6b 20 61 6e 64 20 65 64 69 74 20 79 6f 75 72 20 70 72 65 76 69 6f 75 73 20 70 72 6f .back.and.edit.your.previous.pro
c560 6d 70 74 73 20 6f 72 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 20 77 68 65 6e 0a 3b 3b 20 20 20 mpts.or.LLM.responses.when.;;...
c580 63 6f 6e 74 69 6e 75 69 6e 67 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 20 20 54 68 65 73 continuing.a.conversation...Thes
c5a0 65 20 77 69 6c 6c 20 62 65 20 66 65 64 20 62 61 63 6b 20 74 6f 20 74 68 65 20 6d 6f 64 65 6c 2e e.will.be.fed.back.to.the.model.
c5c0 0a 3b 3b 0a 3b 3b 20 52 65 71 75 69 72 65 6d 65 6e 74 73 20 66 6f 72 20 43 68 61 74 47 50 54 2c .;;.;;.Requirements.for.ChatGPT,
c5e0 20 41 7a 75 72 65 2c 20 47 65 6d 69 6e 69 20 6f 72 20 4b 61 67 69 3a 0a 3b 3b 0a 3b 3b 20 2d 20 .Azure,.Gemini.or.Kagi:.;;.;;.-.
c600 59 6f 75 20 6e 65 65 64 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 41 50 49 20 6b 65 79 2e You.need.an.appropriate.API.key.
c620 20 20 53 65 74 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 ..Set.the.variable.`gptel-api-ke
c640 79 27 20 74 6f 20 74 68 65 0a 3b 3b 20 20 20 6b 65 79 20 6f 72 20 74 6f 20 61 20 66 75 6e 63 74 y'.to.the.;;...key.or.to.a.funct
c660 69 6f 6e 20 6f 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20 72 65 74 75 72 6e 73 ion.of.no.arguments.that.returns
c680 20 74 68 65 20 6b 65 79 2e 20 20 28 49 74 20 74 72 69 65 73 20 74 6f 0a 3b 3b 20 20 20 75 73 65 .the.key...(It.tries.to.;;...use
c6a0 20 60 61 75 74 68 2d 73 6f 75 72 63 65 27 20 62 79 20 64 65 66 61 75 6c 74 29 0a 3b 3b 0a 3b 3b .`auth-source'.by.default).;;.;;
c6c0 20 2d 20 46 6f 72 20 41 7a 75 72 65 3a 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63 .-.For.Azure:.define.a.gptel-bac
c6e0 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 7a 75 72 65 27 2c 20 77 68 kend.with.`gptel-make-azure',.wh
c700 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 47 65 6d 69 6e 69 3a 20 64 65 66 69 6e 65 ich.see..;;.-.For.Gemini:.define
c720 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b .a.gptel-backend.with.`gptel-mak
c740 65 2d 67 65 6d 69 6e 69 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b 3b 20 2d 20 46 6f 72 20 41 e-gemini',.which.see..;;.-.For.A
c760 6e 74 68 72 6f 70 69 63 20 28 43 6c 61 75 64 65 29 3a 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 nthropic.(Claude):.define.a.gpte
c780 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 l-backend.with.`gptel-make-anthr
c7a0 6f 70 69 63 27 2c 0a 3b 3b 20 20 20 77 68 69 63 68 20 73 65 65 0a 3b 3b 20 2d 20 46 6f 72 20 4b opic',.;;...which.see.;;.-.For.K
c7c0 61 67 69 3a 20 64 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 77 69 74 68 agi:.define.a.gptel-backend.with
c7e0 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6b 61 67 69 27 2c 20 77 68 69 63 68 20 73 65 65 2e 0a 3b .`gptel-make-kagi',.which.see..;
c800 3b 0a 3b 3b 20 46 6f 72 20 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 75 73 69 6e 67 20 4f 6c 6c 61 ;.;;.For.local.models.using.Olla
c820 6d 61 2c 20 4c 6c 61 6d 61 2e 63 70 70 20 6f 72 20 47 50 54 34 41 6c 6c 3a 0a 3b 3b 0a 3b 3b 20 ma,.Llama.cpp.or.GPT4All:.;;.;;.
c840 2d 20 54 68 65 20 6d 6f 64 65 6c 20 68 61 73 20 74 6f 20 62 65 20 72 75 6e 6e 69 6e 67 20 6f 6e -.The.model.has.to.be.running.on
c860 20 61 6e 20 61 63 63 65 73 73 69 62 6c 65 20 61 64 64 72 65 73 73 20 28 6f 72 20 6c 6f 63 61 6c .an.accessible.address.(or.local
c880 68 6f 73 74 29 0a 3b 3b 20 2d 20 44 65 66 69 6e 65 20 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e host).;;.-.Define.a.gptel-backen
c8a0 64 20 77 69 74 68 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 27 20 6f 72 20 60 67 d.with.`gptel-make-ollama'.or.`g
c8c0 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 27 2c 0a 3b 3b 20 20 20 77 68 69 63 68 20 73 ptel-make-gpt4all',.;;...which.s
c8e0 65 65 2e 0a 3b 3b 0a 3b 3b 20 43 6f 6e 73 75 6c 74 20 74 68 65 20 70 61 63 6b 61 67 65 20 52 45 ee..;;.;;.Consult.the.package.RE
c900 41 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 20 61 6e 64 20 6d 6f 72 65 20 68 65 6c 70 20 ADME.for.examples.and.more.help.
c920 77 69 74 68 20 63 6f 6e 66 69 67 75 72 69 6e 67 0a 3b 3b 20 62 61 63 6b 65 6e 64 73 2e 0a 3b 3b with.configuring.;;.backends..;;
c940 0a 3b 3b 20 55 73 61 67 65 3a 0a 3b 3b 0a 3b 3b 20 67 70 74 65 6c 20 63 61 6e 20 62 65 20 75 73 .;;.Usage:.;;.;;.gptel.can.be.us
c960 65 64 20 69 6e 20 61 6e 79 20 62 75 66 66 65 72 20 6f 72 20 69 6e 20 61 20 64 65 64 69 63 61 74 ed.in.any.buffer.or.in.a.dedicat
c980 65 64 20 63 68 61 74 20 62 75 66 66 65 72 2e 20 20 54 68 65 0a 3b 3b 20 69 6e 74 65 72 61 63 74 ed.chat.buffer...The.;;.interact
c9a0 69 6f 6e 20 6d 6f 64 65 6c 20 69 73 20 73 69 6d 70 6c 65 3a 20 54 79 70 65 20 69 6e 20 61 20 71 ion.model.is.simple:.Type.in.a.q
c9c0 75 65 72 79 20 61 6e 64 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 77 69 6c 6c 20 62 65 0a 3b 3b uery.and.the.response.will.be.;;
c9e0 20 69 6e 73 65 72 74 65 64 20 62 65 6c 6f 77 2e 20 20 59 6f 75 20 63 61 6e 20 63 6f 6e 74 69 6e .inserted.below...You.can.contin
ca00 75 65 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 79 20 74 79 70 69 6e 67 20 62 65 ue.the.conversation.by.typing.be
ca20 6c 6f 77 20 74 68 65 0a 3b 3b 20 72 65 73 70 6f 6e 73 65 2e 0a 3b 3b 0a 3b 3b 20 54 6f 20 75 73 low.the.;;.response..;;.;;.To.us
ca40 65 20 74 68 69 73 20 69 6e 20 61 6e 79 20 62 75 66 66 65 72 3a 0a 3b 3b 0a 3b 3b 20 2d 20 43 61 e.this.in.any.buffer:.;;.;;.-.Ca
ca60 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 74 6f 20 73 65 6e 64 20 74 68 65 20 74 65 78 74 ll.`gptel-send'.to.send.the.text
ca80 20 75 70 20 74 6f 20 74 68 65 20 63 75 72 73 6f 72 2e 20 20 53 65 6c 65 63 74 20 61 20 72 65 67 .up.to.the.cursor...Select.a.reg
caa0 69 6f 6e 20 74 6f 0a 3b 3b 20 20 20 73 65 6e 64 20 6f 6e 6c 79 20 74 68 65 20 72 65 67 69 6f 6e ion.to.;;...send.only.the.region
cac0 2e 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e 20 73 65 6c 65 63 74 20 70 72 65 76 69 6f 75 ..;;.;;.-.You.can.select.previou
cae0 73 20 70 72 6f 6d 70 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 0a 3b 3b 20 20 20 s.prompts.and.responses.to.;;...
cb00 63 6f 6e 74 69 6e 75 65 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 3b 3b 0a 3b 3b continue.the.conversation..;;.;;
cb20 20 2d 20 43 61 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 .-.Call.`gptel-send'.with.a.pref
cb40 69 78 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 61 63 63 65 73 73 20 61 20 6d 65 6e 75 20 77 68 65 ix.argument.to.access.a.menu.whe
cb60 72 65 20 79 6f 75 20 63 61 6e 20 73 65 74 0a 3b 3b 20 20 20 79 6f 75 72 20 62 61 63 6b 65 6e 64 re.you.can.set.;;...your.backend
cb80 2c 20 6d 6f 64 65 6c 20 61 6e 64 20 6f 74 68 65 72 20 70 61 72 61 6d 65 74 65 72 73 2c 20 6f 72 ,.model.and.other.parameters,.or
cba0 20 74 6f 20 72 65 64 69 72 65 63 74 20 74 68 65 0a 3b 3b 20 20 20 70 72 6f 6d 70 74 2f 72 65 73 .to.redirect.the.;;...prompt/res
cbc0 70 6f 6e 73 65 2e 0a 3b 3b 0a 3b 3b 20 54 6f 20 75 73 65 20 74 68 69 73 20 69 6e 20 61 20 64 65 ponse..;;.;;.To.use.this.in.a.de
cbe0 64 69 63 61 74 65 64 20 62 75 66 66 65 72 3a 0a 3b 3b 20 2d 20 4d 2d 78 20 67 70 74 65 6c 3a 20 dicated.buffer:.;;.-.M-x.gptel:.
cc00 53 74 61 72 74 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 0a 3b 3b 20 2d 20 43 2d 75 20 4d 2d Start.a.chat.session.;;.-.C-u.M-
cc20 78 20 67 70 74 65 6c 3a 20 53 74 61 72 74 20 61 6e 6f 74 68 65 72 20 73 65 73 73 69 6f 6e 20 6f x.gptel:.Start.another.session.o
cc40 72 20 6d 75 6c 74 69 70 6c 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 63 68 61 74 20 73 65 73 73 r.multiple.independent.chat.sess
cc60 69 6f 6e 73 0a 3b 3b 0a 3b 3b 20 2d 20 49 6e 20 74 68 65 20 63 68 61 74 20 73 65 73 73 69 6f 6e ions.;;.;;.-.In.the.chat.session
cc80 3a 20 50 72 65 73 73 20 60 43 2d 63 20 52 45 54 27 20 28 60 67 70 74 65 6c 2d 73 65 6e 64 27 29 :.Press.`C-c.RET'.(`gptel-send')
cca0 20 74 6f 20 73 65 6e 64 20 79 6f 75 72 20 70 72 6f 6d 70 74 2e 0a 3b 3b 20 20 20 55 73 65 20 61 .to.send.your.prompt..;;...Use.a
ccc0 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 20 28 60 43 2d 75 20 43 2d 63 20 52 45 54 27 29 .prefix.argument.(`C-u.C-c.RET')
cce0 20 74 6f 20 61 63 63 65 73 73 20 61 20 6d 65 6e 75 2e 20 20 49 6e 20 74 68 69 73 20 6d 65 6e 75 .to.access.a.menu...In.this.menu
cd00 20 79 6f 75 0a 3b 3b 20 20 20 63 61 6e 20 73 65 74 20 63 68 61 74 20 70 61 72 61 6d 65 74 65 72 .you.;;...can.set.chat.parameter
cd20 73 20 6c 69 6b 65 20 74 68 65 20 73 79 73 74 65 6d 20 64 69 72 65 63 74 69 76 65 73 2c 20 61 63 s.like.the.system.directives,.ac
cd40 74 69 76 65 20 62 61 63 6b 65 6e 64 20 6f 72 0a 3b 3b 20 20 20 6d 6f 64 65 6c 2c 20 6f 72 20 63 tive.backend.or.;;...model,.or.c
cd60 68 6f 6f 73 65 20 74 6f 20 72 65 64 69 72 65 63 74 20 74 68 65 20 69 6e 70 75 74 20 6f 72 20 6f hoose.to.redirect.the.input.or.o
cd80 75 74 70 75 74 20 65 6c 73 65 77 68 65 72 65 20 28 73 75 63 68 20 61 73 20 74 6f 20 74 68 65 0a utput.elsewhere.(such.as.to.the.
cda0 3b 3b 20 20 20 6b 69 6c 6c 20 72 69 6e 67 29 2e 0a 3b 3b 0a 3b 3b 20 2d 20 59 6f 75 20 63 61 6e ;;...kill.ring)..;;.;;.-.You.can
cdc0 20 73 61 76 65 20 74 68 69 73 20 62 75 66 66 65 72 20 74 6f 20 61 20 66 69 6c 65 2e 20 20 57 68 .save.this.buffer.to.a.file...Wh
cde0 65 6e 20 6f 70 65 6e 69 6e 67 20 74 68 69 73 20 66 69 6c 65 2c 20 74 75 72 6e 69 6e 67 20 6f 6e en.opening.this.file,.turning.on
ce00 0a 3b 3b 20 20 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 77 69 6c 6c 20 61 6c 6c 6f 77 20 72 65 .;;...`gptel-mode'.will.allow.re
ce20 73 75 6d 69 6e 67 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 2e 0a 3b 3b 0a 3b 3b 20 46 suming.the.conversation..;;.;;.F
ce40 69 6e 61 6c 6c 79 2c 20 67 70 74 65 6c 20 6f 66 66 65 72 73 20 61 20 67 65 6e 65 72 61 6c 20 70 inally,.gptel.offers.a.general.p
ce60 75 72 70 6f 73 65 20 41 50 49 20 66 6f 72 20 77 72 69 74 69 6e 67 20 4c 4c 4d 20 69 6e 65 72 61 urpose.API.for.writing.LLM.inera
ce80 63 74 69 6f 6e 73 0a 3b 3b 20 74 68 61 74 20 73 75 69 74 20 68 6f 77 20 79 6f 75 20 77 6f 72 6b ctions.;;.that.suit.how.you.work
cea0 2c 20 73 65 65 20 60 67 70 74 65 6c 2d 72 65 71 75 65 73 74 27 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 ,.see.`gptel-request'...;;;.Code
cec0 3a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 :.(declare-function.markdown-mod
cee0 65 20 22 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 e."markdown-mode").(declare-func
cf00 74 69 6f 6e 20 67 70 74 65 6c 2d 63 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 20 22 67 70 tion.gptel-curl-get-response."gp
cf20 74 65 6c 2d 63 75 72 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 tel-curl").(declare-function.gpt
cf40 65 6c 2d 6d 65 6e 75 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 29 0a 28 64 65 63 6c el-menu."gptel-transient").(decl
cf60 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 are-function.gptel-system-prompt
cf80 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e ."gptel-transient").(declare-fun
cfa0 63 74 69 6f 6e 20 70 75 6c 73 65 2d 6d 6f 6d 65 6e 74 61 72 79 2d 68 69 67 68 6c 69 67 68 74 2d ction.pulse-momentary-highlight-
cfc0 72 65 67 69 6f 6e 20 22 70 75 6c 73 65 22 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 region."pulse")..(declare-functi
cfe0 6f 6e 20 65 64 69 66 66 2d 6d 61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 66 65 72 20 22 65 64 69 on.ediff-make-cloned-buffer."edi
d000 66 66 2d 75 74 69 6c 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 65 64 69 66 ff-util").(declare-function.edif
d020 66 2d 72 65 67 69 6f 6e 73 2d 69 6e 74 65 72 6e 61 6c 20 22 65 64 69 66 66 22 29 0a 0a 28 64 65 f-regions-internal."ediff")..(de
d040 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74 65 clare-function.gptel-org--create
d060 2d 70 72 6f 6d 70 74 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 -prompt."gptel-org").(declare-fu
d080 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 20 22 67 70 74 65 nction.gptel-org-set-topic."gpte
d0a0 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d l-org").(declare-function.gptel-
d0c0 6f 72 67 2d 2d 73 61 76 65 2d 73 74 61 74 65 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 org--save-state."gptel-org").(de
d0e0 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 72 65 73 74 6f 72 clare-function.gptel-org--restor
d100 65 2d 73 74 61 74 65 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 e-state."gptel-org").(declare-fu
d120 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 73 74 72 65 61 6d 2d 63 6f 6e 76 65 72 74 2d 6d 61 72 nction.gptel--stream-convert-mar
d140 6b 64 6f 77 6e 2d 3e 6f 72 67 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 kdown->org."gptel-org").(declare
d160 2d 66 75 6e 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d 6d 61 72 6b 64 6f 77 -function.gptel--convert-markdow
d180 6e 2d 3e 6f 72 67 20 22 67 70 74 65 6c 2d 6f 72 67 22 29 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f n->org."gptel-org").(define-obso
d1a0 6c 65 74 65 2d 66 75 6e 63 74 69 6f 6e 2d 61 6c 69 61 73 0a 20 20 27 67 70 74 65 6c 2d 73 65 74 lete-function-alias...'gptel-set
d1c0 2d 74 6f 70 69 63 20 27 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 20 22 30 2e 37 -topic.'gptel-org-set-topic."0.7
d1e0 2e 35 22 29 0a 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 72 65 71 75 .5")..(eval-when-compile...(requ
d200 69 72 65 20 27 73 75 62 72 2d 78 29 0a 20 20 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 ire.'subr-x)...(require.'cl-lib)
d220 29 0a 28 72 65 71 75 69 72 65 20 27 63 6f 6d 70 61 74 20 6e 69 6c 20 74 29 0a 28 72 65 71 75 69 ).(require.'compat.nil.t).(requi
d240 72 65 20 27 75 72 6c 29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75 69 72 65 re.'url).(require.'map).(require
d260 20 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 29 0a 28 72 65 71 75 69 72 65 .'text-property-search).(require
d280 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 70 .'cl-generic).(require.'gptel-op
d2a0 65 6e 61 69 29 0a 0a 28 77 69 74 68 2d 65 76 61 6c 2d 61 66 74 65 72 2d 6c 6f 61 64 20 27 6f 72 enai)..(with-eval-after-load.'or
d2c0 67 0a 20 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 72 67 29 29 0a 0a 0c 0a 3b 3b 20 g...(require.'gptel-org))....;;.
d2e0 55 73 65 72 20 6f 70 74 69 6f 6e 73 0a 0a 28 64 65 66 67 72 6f 75 70 20 67 70 74 65 6c 20 6e 69 User.options..(defgroup.gptel.ni
d300 6c 0a 20 20 22 49 6e 74 65 72 61 63 74 20 77 69 74 68 20 4c 4c 4d 73 20 66 72 6f 6d 20 61 6e 79 l..."Interact.with.LLMs.from.any
d320 77 68 65 72 65 20 69 6e 20 45 6d 61 63 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 68 79 70 65 72 where.in.Emacs."...:group.'hyper
d340 6d 65 64 69 61 29 0a 0a 3b 3b 20 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 68 6f 73 74 media)..;;.(defcustom.gptel-host
d360 20 22 61 70 69 2e 6f 70 65 6e 61 69 2e 63 6f 6d 22 0a 3b 3b 20 20 20 22 54 68 65 20 41 50 49 20 ."api.openai.com".;;..."The.API.
d380 68 6f 73 74 20 71 75 65 72 69 65 64 20 62 79 20 67 70 74 65 6c 2e 22 0a 3b 3b 20 20 20 3a 67 72 host.queried.by.gptel.".;;...:gr
d3a0 6f 75 70 20 27 67 70 74 65 6c 0a 3b 3b 20 20 20 3a 74 79 70 65 20 27 73 74 72 69 6e 67 29 0a 28 oup.'gptel.;;...:type.'string).(
d3c0 6d 61 6b 65 2d 6f 62 73 6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 0a 20 27 67 70 74 65 6c 2d 68 make-obsolete-variable..'gptel-h
d3e0 6f 73 74 0a 20 22 55 73 65 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 20 69 6e ost.."Use.`gptel-make-openai'.in
d400 73 74 65 61 64 2e 22 0a 20 22 30 2e 35 2e 30 22 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 stead.".."0.5.0")..(defcustom.gp
d420 74 65 6c 2d 70 72 6f 78 79 20 22 22 0a 20 20 22 50 61 74 68 20 74 6f 20 61 20 70 72 6f 78 79 20 tel-proxy.""..."Path.to.a.proxy.
d440 74 6f 20 75 73 65 20 66 6f 72 20 67 70 74 65 6c 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 2e 0a 50 to.use.for.gptel.interactions..P
d460 61 73 73 65 64 20 74 6f 20 63 75 72 6c 20 76 69 61 20 2d 2d 70 72 6f 78 79 20 61 72 67 2c 20 66 assed.to.curl.via.--proxy.arg,.f
d480 6f 72 20 65 78 61 6d 70 6c 65 20 5c 22 70 72 6f 78 79 2e 79 6f 75 72 6f 72 67 2e 63 6f 6d 3a 38 or.example.\"proxy.yourorg.com:8
d4a0 30 5c 22 0a 4c 65 61 76 65 20 69 74 20 65 6d 70 74 79 20 69 66 20 79 6f 75 20 64 6f 6e 27 74 20 0\".Leave.it.empty.if.you.don't.
d4c0 75 73 65 20 61 20 70 72 6f 78 79 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 use.a.proxy."...:group.'gptel...
d4e0 3a 74 79 70 65 20 27 73 74 72 69 6e 67 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c :type.'string)..(defcustom.gptel
d500 2d 61 70 69 2d 6b 65 79 20 23 27 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 6f 6d 2d 61 75 -api-key.#'gptel-api-key-from-au
d520 74 68 2d 73 6f 75 72 63 65 0a 20 20 22 41 6e 20 41 50 49 20 6b 65 79 20 28 73 74 72 69 6e 67 29 th-source..."An.API.key.(string)
d540 20 66 6f 72 20 74 68 65 20 64 65 66 61 75 6c 74 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 2e 0a 0a 4f .for.the.default.LLM.backend...O
d560 70 65 6e 41 49 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 43 61 6e 20 61 6c 73 6f 20 62 65 20 61 penAI.by.default...Can.also.be.a
d580 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20 72 .function.of.no.arguments.that.r
d5a0 65 74 75 72 6e 73 20 61 6e 20 41 50 49 0a 6b 65 79 20 28 6d 6f 72 65 20 73 65 63 75 72 65 29 20 eturns.an.API.key.(more.secure).
d5c0 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 62 61 63 6b 65 6e 64 2e 22 0a 20 20 3a 67 72 6f 75 for.the.active.backend."...:grou
d5e0 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 p.'gptel...:type.'(choice.......
d600 20 20 20 20 28 73 74 72 69 6e 67 20 3a 74 61 67 20 22 41 50 49 20 6b 65 79 22 29 0a 20 20 20 20 ....(string.:tag."API.key").....
d620 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 3a 74 61 67 20 22 46 75 6e 63 74 69 6f 6e 20 74 ......(function.:tag."Function.t
d640 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 41 50 49 20 6b 65 79 22 29 29 29 0a 0a 28 64 65 hat.returns.the.API.key")))..(de
d660 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 74 0a 20 20 22 53 74 72 65 61 6d fcustom.gptel-stream.t..."Stream
d680 20 72 65 73 70 6f 6e 73 65 73 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d 20 61 73 20 74 68 65 79 20 .responses.from.the.LLM.as.they.
d6a0 61 72 65 20 72 65 63 65 69 76 65 64 2e 0a 0a 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 69 67 are.received...This.option.is.ig
d6c0 6e 6f 72 65 64 20 75 6e 6c 65 73 73 0a 2d 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 73 nored.unless.-.the.LLM.backend.s
d6e0 75 70 70 6f 72 74 73 20 73 74 72 65 61 6d 69 6e 67 2c 20 61 6e 64 0a 2d 20 43 75 72 6c 20 69 73 upports.streaming,.and.-.Curl.is
d700 20 69 6e 20 75 73 65 20 28 73 65 65 20 60 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 27 29 0a 0a .in.use.(see.`gptel-use-curl')..
d720 57 68 65 6e 20 73 65 74 20 74 6f 20 6e 69 6c 2c 20 45 6d 61 63 73 20 77 61 69 74 73 20 66 6f 72 When.set.to.nil,.Emacs.waits.for
d740 20 74 68 65 20 66 75 6c 6c 20 72 65 73 70 6f 6e 73 65 20 61 6e 64 20 69 6e 73 65 72 74 73 20 69 .the.full.response.and.inserts.i
d760 74 0a 61 6c 6c 20 61 74 20 6f 6e 63 65 2e 20 20 54 68 69 73 20 77 61 69 74 20 69 73 20 61 73 79 t.all.at.once...This.wait.is.asy
d780 6e 63 68 72 6f 6e 6f 75 73 2e 0a 0a 5c 3d 27 74 69 73 20 61 20 62 69 74 20 73 69 6c 6c 79 2e 22 nchronous...\='tis.a.bit.silly."
d7a0 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 ...:group.'gptel...:type.'boolea
d7c0 6e 29 0a 28 6d 61 6b 65 2d 6f 62 73 6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 n).(make-obsolete-variable.'gpte
d7e0 6c 2d 70 6c 61 79 62 61 63 6b 20 27 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 22 30 2e 33 2e 30 22 l-playback.'gptel-stream."0.3.0"
d800 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 20 28 61 6e )..(defcustom.gptel-use-curl.(an
d820 64 20 28 65 78 65 63 75 74 61 62 6c 65 2d 66 69 6e 64 20 22 63 75 72 6c 22 29 20 74 29 0a 20 20 d.(executable-find."curl").t)...
d840 22 57 68 65 74 68 65 72 20 67 70 74 65 6c 20 73 68 6f 75 6c 64 20 70 72 65 66 65 72 20 43 75 72 "Whether.gptel.should.prefer.Cur
d860 6c 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 l.when.available."...:group.'gpt
d880 65 6c 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d el...:type.'boolean)..(defcustom
d8a0 20 67 70 74 65 6c 2d 63 75 72 6c 2d 66 69 6c 65 2d 73 69 7a 65 2d 74 68 72 65 73 68 6f 6c 64 20 .gptel-curl-file-size-threshold.
d8c0 31 33 30 30 30 30 0a 20 20 22 53 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20 66 6f 72 20 75 73 69 130000..."Size.threshold.for.usi
d8e0 6e 67 20 66 69 6c 65 20 69 6e 70 75 74 20 77 69 74 68 20 43 75 72 6c 2e 0a 0a 53 70 65 63 69 66 ng.file.input.with.Curl...Specif
d900 69 65 73 20 74 68 65 20 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20 66 6f 72 20 77 68 65 6e 20 ies.the.size.threshold.for.when.
d920 74 6f 20 75 73 65 20 61 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 20 74 6f 20 70 61 73 73 20 to.use.a.temporary.file.to.pass.
d940 64 61 74 61 20 74 6f 0a 43 75 72 6c 20 69 6e 20 47 50 54 65 6c 20 71 75 65 72 69 65 73 2e 20 20 data.to.Curl.in.GPTel.queries...
d960 49 66 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 20 74 6f 20 62 65 20 73 65 If.the.size.of.the.data.to.be.se
d980 6e 74 20 65 78 63 65 65 64 73 20 74 68 69 73 0a 74 68 72 65 73 68 6f 6c 64 2c 20 74 68 65 20 64 nt.exceeds.this.threshold,.the.d
d9a0 61 74 61 20 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20 66 69 ata.is.written.to.a.temporary.fi
d9c0 6c 65 20 61 6e 64 20 70 61 73 73 65 64 20 74 6f 20 43 75 72 6c 20 75 73 69 6e 67 20 74 68 65 0a le.and.passed.to.Curl.using.the.
d9e0 60 2d 2d 64 61 74 61 2d 62 69 6e 61 72 79 27 20 6f 70 74 69 6f 6e 20 77 69 74 68 20 61 20 66 69 `--data-binary'.option.with.a.fi
da00 6c 65 20 72 65 66 65 72 65 6e 63 65 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 64 61 le.reference...Otherwise,.the.da
da20 74 61 20 69 73 20 70 61 73 73 65 64 0a 64 69 72 65 63 74 6c 79 20 61 73 20 61 20 63 6f 6d 6d 61 ta.is.passed.directly.as.a.comma
da40 6e 64 2d 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 2e 0a 0a 54 68 65 20 76 61 6c 75 65 20 69 73 20 nd-line.argument...The.value.is.
da60 61 6e 20 69 6e 74 65 67 65 72 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 74 68 65 20 6e 75 6d 62 an.integer.representing.the.numb
da80 65 72 20 6f 66 20 62 79 74 65 73 2e 0a 0a 41 64 6a 75 73 74 69 6e 67 20 74 68 69 73 20 76 61 6c er.of.bytes...Adjusting.this.val
daa0 75 65 20 6d 61 79 20 62 65 20 6e 65 63 65 73 73 61 72 79 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e ue.may.be.necessary.depending.on
dac0 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 0a 61 6e 64 20 74 68 65 20 74 79 70 69 63 61 6c .the.environment.and.the.typical
dae0 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 20 62 65 69 6e 67 20 73 65 6e 74 20 69 6e 20 .size.of.the.data.being.sent.in.
db00 47 50 54 65 6c 20 71 75 65 72 69 65 73 2e 0a 41 20 6c 61 72 67 65 72 20 76 61 6c 75 65 20 6d 61 GPTel.queries..A.larger.value.ma
db20 79 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 62 79 20 61 76 6f 69 64 69 6e y.improve.performance.by.avoidin
db40 67 20 74 68 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20 63 72 65 61 74 69 6e 67 0a 74 65 6d 70 6f g.the.overhead.of.creating.tempo
db60 72 61 72 79 20 66 69 6c 65 73 20 66 6f 72 20 73 6d 61 6c 6c 20 64 61 74 61 20 70 61 79 6c 6f 61 rary.files.for.small.data.payloa
db80 64 73 2c 20 77 68 69 6c 65 20 61 20 73 6d 61 6c 6c 65 72 20 76 61 6c 75 65 20 6d 61 79 20 62 65 ds,.while.a.smaller.value.may.be
dba0 20 6e 65 65 64 65 64 0a 69 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 61 72 67 75 .needed.if.the.command-line.argu
dbc0 6d 65 6e 74 20 73 69 7a 65 20 69 73 20 6c 69 6d 69 74 65 64 20 62 79 20 74 68 65 20 6f 70 65 72 ment.size.is.limited.by.the.oper
dbe0 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 ating.system."...:group.'gptel..
dc00 20 3a 74 79 70 65 20 27 69 6e 74 65 67 65 72 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 .:type.'integer)..(defcustom.gpt
dc20 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 66 69 6c 74 65 72 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 27 el-response-filter-functions...'
dc40 28 67 70 74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d 6f 72 67 29 0a 20 20 22 41 62 6e 6f 72 6d 61 6c (gptel--convert-org)..."Abnormal
dc60 20 68 6f 6f 6b 20 66 6f 72 20 74 72 61 6e 73 66 6f 72 6d 69 6e 67 20 74 68 65 20 72 65 73 70 6f .hook.for.transforming.the.respo
dc80 6e 73 65 20 66 72 6f 6d 20 61 6e 20 4c 4c 4d 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 74 nse.from.an.LLM...This.is.used.t
dca0 6f 20 66 6f 72 6d 61 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 6e 20 73 6f 6d 65 20 77 61 o.format.the.response.in.some.wa
dcc0 79 2c 20 73 75 63 68 20 61 73 20 66 69 6c 6c 69 6e 67 0a 70 61 72 61 67 72 61 70 68 73 2c 20 61 y,.such.as.filling.paragraphs,.a
dce0 64 64 69 6e 67 20 61 6e 6e 6f 74 61 74 69 6f 6e 73 20 6f 72 20 72 65 63 6f 72 64 69 6e 67 20 69 dding.annotations.or.recording.i
dd00 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 0a 72 65 73 70 6f 6e 73 65 20 6c 69 6b 65 20 nformation.in.the.response.like.
dd20 6c 69 6e 6b 73 2e 0a 0a 45 61 63 68 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 68 6f links...Each.function.in.this.ho
dd40 6f 6b 20 72 65 63 65 69 76 65 73 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2c 20 74 68 65 20 72 ok.receives.two.arguments,.the.r
dd60 65 73 70 6f 6e 73 65 0a 73 74 72 69 6e 67 20 74 6f 20 74 72 61 6e 73 66 6f 72 6d 20 61 6e 64 20 esponse.string.to.transform.and.
dd80 74 68 65 20 4c 4c 4d 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 62 75 66 66 65 72 2e 20 20 49 74 0a the.LLM.interaction.buffer...It.
dda0 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65 20 74 72 61 6e 73 66 6f 72 6d 65 64 20 73 74 should.return.the.transformed.st
ddc0 72 69 6e 67 2e 0a 0a 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 6f 6e 6c 79 20 75 73 65 64 20 66 ring...NOTE:.This.is.only.used.f
dde0 6f 72 20 6e 6f 6e 2d 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2e 20 20 54 6f 0a or.non-streaming.responses...To.
de00 74 72 61 6e 73 66 6f 72 6d 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 75 transform.streaming.responses,.u
de20 73 65 20 60 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 72 65 61 6d 2d 68 6f 6f 6b 27 20 61 6e 64 0a se.`gptel-post-stream-hook'.and.
de40 60 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 27 2e `gptel-post-response-functions'.
de60 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 "...:group.'gptel...:type.'hook)
de80 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 72 65 2d 72 65 73 70 6f 6e 73 65 2d ..(defcustom.gptel-pre-response-
dea0 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 62 65 66 6f 72 65 20 69 6e 73 65 hook.nil..."Hook.run.before.inse
dec0 72 74 69 6e 67 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 6e 74 6f 20 74 68 65 20 rting.the.LLM.response.into.the.
dee0 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61 current.buffer...This.hook.is.ca
df00 6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 77 68 65 72 65 20 74 68 65 20 4c 4c 4d lled.in.the.buffer.where.the.LLM
df20 20 72 65 73 70 6f 6e 73 65 20 77 69 6c 6c 20 62 65 0a 69 6e 73 65 72 74 65 64 2e 0a 0a 4e 6f 74 .response.will.be.inserted...Not
df40 65 3a 20 74 68 69 73 20 68 6f 6f 6b 20 6f 6e 6c 79 20 72 75 6e 73 20 69 66 20 74 68 65 20 72 65 e:.this.hook.only.runs.if.the.re
df60 71 75 65 73 74 20 73 75 63 63 65 65 64 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c quest.succeeds."...:group.'gptel
df80 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 ...:type.'hook)..(define-obsolet
dfa0 65 2d 76 61 72 69 61 62 6c 65 2d 61 6c 69 61 73 0a 20 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 e-variable-alias...'gptel-post-r
dfc0 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 esponse-hook.'gptel-post-respons
dfe0 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 22 30 2e 36 2e 30 22 0a 20 20 22 50 6f 73 74 2d 72 65 e-functions..."0.6.0"..."Post-re
e000 73 70 6f 6e 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 6e 6f 77 20 63 61 6c 6c 65 64 20 sponse.functions.are.now.called.
e020 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 74 68 65 0a 73 74 61 72 74 20 61 6e with.two.arguments:.the.start.an
e040 64 20 65 6e 64 20 62 75 66 66 65 72 20 70 6f 73 69 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 72 65 d.end.buffer.positions.of.the.re
e060 73 70 6f 6e 73 65 2e 22 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74 sponse.")..(defcustom.gptel-post
e080 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 6e 69 6c 0a 20 20 22 41 62 6e 6f 72 -response-functions.nil..."Abnor
e0a0 6d 61 6c 20 68 6f 6f 6b 20 72 75 6e 20 61 66 74 65 72 20 69 6e 73 65 72 74 69 6e 67 20 74 68 65 mal.hook.run.after.inserting.the
e0c0 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 69 6e 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 .LLM.response.into.the.current.b
e0e0 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 20 74 uffer...This.hook.is.called.in.t
e100 68 65 20 62 75 66 66 65 72 20 74 6f 20 77 68 69 63 68 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f he.buffer.to.which.the.LLM.respo
e120 6e 73 65 20 69 73 0a 73 65 6e 74 2c 20 61 6e 64 20 61 66 74 65 72 20 74 68 65 20 66 75 6c 6c 20 nse.is.sent,.and.after.the.full.
e140 72 65 73 70 6f 6e 73 65 20 68 61 73 20 62 65 65 6e 20 69 6e 73 65 72 74 65 64 2e 20 20 45 61 63 response.has.been.inserted...Eac
e160 68 0a 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 h.function.is.called.with.two.ar
e180 67 75 6d 65 6e 74 73 3a 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 62 65 67 69 6e 6e 69 6e 67 20 guments:.the.response.beginning.
e1a0 61 6e 64 0a 65 6e 64 20 70 6f 73 69 74 69 6f 6e 73 2e 0a 0a 4e 6f 74 65 3a 20 74 68 69 73 20 68 and.end.positions...Note:.this.h
e1c0 6f 6f 6b 20 72 75 6e 73 20 65 76 65 6e 20 69 66 20 74 68 65 20 72 65 71 75 65 73 74 20 66 61 69 ook.runs.even.if.the.request.fai
e1e0 6c 73 2e 20 20 49 6e 20 74 68 69 73 20 63 61 73 65 20 74 68 65 0a 72 65 73 70 6f 6e 73 65 20 62 ls...In.this.case.the.response.b
e200 65 67 69 6e 6e 69 6e 67 20 61 6e 64 20 65 6e 64 20 70 6f 73 69 74 69 6f 6e 73 20 61 72 65 20 62 eginning.and.end.positions.are.b
e220 6f 74 68 20 74 68 65 20 63 75 72 73 6f 72 20 70 6f 73 69 74 69 6f 6e 0a 61 74 20 74 68 65 20 74 oth.the.cursor.position.at.the.t
e240 69 6d 65 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 ime.of.the.request."...:group.'g
e260 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 3b 3b 20 28 64 65 66 63 75 73 74 ptel...:type.'hook)..;;.(defcust
e280 6f 6d 20 67 70 74 65 6c 2d 70 72 65 2d 73 74 72 65 61 6d 2d 69 6e 73 65 72 74 2d 68 6f 6f 6b 20 om.gptel-pre-stream-insert-hook.
e2a0 6e 69 6c 0a 3b 3b 20 20 20 22 48 6f 6f 6b 20 72 75 6e 20 62 65 66 6f 72 65 20 65 61 63 68 20 69 nil.;;..."Hook.run.before.each.i
e2c0 6e 73 65 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73 20 73 74 72 65 61 6d 69 6e 67 20 nsertion.of.the.LLM's.streaming.
e2e0 72 65 73 70 6f 6e 73 65 2e 0a 0a 3b 3b 20 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61 6c 6c 65 response...;;.This.hook.is.calle
e300 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68 65 20 70 d.in.the.buffer.from.which.the.p
e320 72 6f 6d 70 74 20 77 61 73 20 73 65 6e 74 0a 3b 3b 20 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 69 6d rompt.was.sent.;;.to.the.LLM,.im
e340 6d 65 64 69 61 74 65 6c 79 20 62 65 66 6f 72 65 20 74 65 78 74 20 69 6e 73 65 72 74 69 6f 6e 2e mediately.before.text.insertion.
e360 22 0a 3b 3b 20 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 3b 3b 20 20 20 3a 74 79 70 65 20 ".;;...:group.'gptel.;;...:type.
e380 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 6f 73 74 2d 73 74 'hook)..(defcustom.gptel-post-st
e3a0 72 65 61 6d 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f 6b 20 72 75 6e 20 61 66 74 65 72 20 ream-hook.nil..."Hook.run.after.
e3c0 65 61 63 68 20 69 6e 73 65 72 74 69 6f 6e 20 6f 66 20 74 68 65 20 4c 4c 4d 27 73 20 73 74 72 65 each.insertion.of.the.LLM's.stre
e3e0 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 68 6f 6f 6b 20 69 73 20 63 61 aming.response...This.hook.is.ca
e400 6c 6c 65 64 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68 lled.in.the.buffer.from.which.th
e420 65 20 70 72 6f 6d 70 74 20 77 61 73 20 73 65 6e 74 0a 74 6f 20 74 68 65 20 4c 4c 4d 2c 20 61 6e e.prompt.was.sent.to.the.LLM,.an
e440 64 20 61 66 74 65 72 20 61 20 74 65 78 74 20 69 6e 73 65 72 74 69 6f 6e 2e 22 0a 20 20 3a 67 72 d.after.a.text.insertion."...:gr
e460 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 68 6f 6f 6b 29 0a 0a 28 64 65 66 63 oup.'gptel...:type.'hook)..(defc
e480 75 73 74 6f 6d 20 67 70 74 65 6c 2d 64 65 66 61 75 6c 74 2d 6d 6f 64 65 20 28 69 66 20 28 66 62 ustom.gptel-default-mode.(if.(fb
e4a0 6f 75 6e 64 70 20 27 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 oundp.'markdown-mode)...........
e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 61 72 6b 64 6f 77 6e 2d 6d .....................'markdown-m
e4e0 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ode.............................
e500 20 27 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 22 54 68 65 20 64 65 66 61 75 6c 74 20 6d 61 6a 6f .'text-mode)..."The.default.majo
e520 72 20 6d 6f 64 65 20 66 6f 72 20 64 65 64 69 63 61 74 65 64 20 63 68 61 74 20 62 75 66 66 65 72 r.mode.for.dedicated.chat.buffer
e540 73 2e 0a 0a 49 66 20 60 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 27 20 69 73 20 61 76 61 69 6c 61 s...If.`markdown-mode'.is.availa
e560 62 6c 65 2c 20 69 74 20 69 73 20 75 73 65 64 2e 20 20 4f 74 68 65 72 77 69 73 65 20 67 70 74 65 ble,.it.is.used...Otherwise.gpte
e580 6c 0a 64 65 66 61 75 6c 74 73 20 74 6f 20 60 74 65 78 74 2d 6d 6f 64 65 27 2e 22 0a 20 20 3a 67 l.defaults.to.`text-mode'."...:g
e5a0 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 73 79 6d 62 6f 6c 29 0a 0a 3b 3b roup.'gptel...:type.'symbol)..;;
e5c0 20 54 4f 44 4f 3a 20 48 61 6e 64 6c 65 20 60 70 72 6f 67 2d 6d 6f 64 65 27 20 75 73 69 6e 67 20 .TODO:.Handle.`prog-mode'.using.
e5e0 74 68 65 20 60 63 6f 6d 6d 65 6e 74 2d 73 74 61 72 74 27 20 76 61 72 69 61 62 6c 65 0a 28 64 65 the.`comment-start'.variable.(de
e600 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 fcustom.gptel-prompt-prefix-alis
e620 74 0a 20 20 27 28 28 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 20 2e 20 22 23 23 23 20 22 29 0a 20 t...'((markdown-mode..."###.")..
e640 20 20 20 28 6f 72 67 2d 6d 6f 64 65 20 2e 20 22 2a 2a 2a 20 22 29 0a 20 20 20 20 28 74 65 78 74 ...(org-mode..."***.").....(text
e660 2d 6d 6f 64 65 20 2e 20 22 23 23 23 20 22 29 29 0a 20 20 22 53 74 72 69 6e 67 20 75 73 65 64 20 -mode..."###."))..."String.used.
e680 61 73 20 61 20 70 72 65 66 69 78 20 74 6f 20 74 68 65 20 71 75 65 72 79 20 62 65 69 6e 67 20 73 as.a.prefix.to.the.query.being.s
e6a0 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a 0a 54 68 69 73 20 69 73 20 6d 65 61 6e 74 20 66 ent.to.the.LLM...This.is.meant.f
e6c0 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f 20 64 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 or.the.user.to.distinguish.betwe
e6e0 65 6e 20 71 75 65 72 69 65 73 20 61 6e 64 0a 72 65 73 70 6f 6e 73 65 73 2c 20 61 6e 64 20 69 73 en.queries.and.responses,.and.is
e700 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 20 71 75 65 72 79 20 62 65 66 6f 72 65 20 69 .removed.from.the.query.before.i
e720 74 20 69 73 20 73 65 6e 74 2e 0a 0a 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6d 61 70 t.is.sent...This.is.an.alist.map
e740 70 69 6e 67 20 6d 61 6a 6f 72 20 6d 6f 64 65 73 20 74 6f 20 74 68 65 20 70 72 65 66 69 78 20 73 ping.major.modes.to.the.prefix.s
e760 74 72 69 6e 67 73 2e 20 20 54 68 69 73 0a 69 73 20 6f 6e 6c 79 20 69 6e 73 65 72 74 65 64 20 69 trings...This.is.only.inserted.i
e780 6e 20 64 65 64 69 63 61 74 65 64 20 67 70 74 65 6c 20 62 75 66 66 65 72 73 2e 22 0a 20 20 3a 67 n.dedicated.gptel.buffers."...:g
e7a0 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 79 roup.'gptel...:type.'(alist.:key
e7c0 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a 76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e 67 29 -type.symbol.:value-type.string)
e7e0 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 )..(defcustom.gptel-response-pre
e800 66 69 78 2d 61 6c 69 73 74 0a 20 20 27 28 28 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 20 2e 20 22 fix-alist...'((markdown-mode..."
e820 22 29 0a 20 20 20 20 28 6f 72 67 2d 6d 6f 64 65 20 2e 20 22 22 29 0a 20 20 20 20 28 74 65 78 74 ").....(org-mode..."").....(text
e840 2d 6d 6f 64 65 20 2e 20 22 22 29 29 0a 20 20 22 53 74 72 69 6e 67 20 69 6e 73 65 72 74 65 64 20 -mode...""))..."String.inserted.
e860 62 65 66 6f 72 65 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d before.the.response.from.the.LLM
e880 2e 0a 0a 54 68 69 73 20 69 73 20 6d 65 61 6e 74 20 66 6f 72 20 74 68 65 20 75 73 65 72 20 74 6f ...This.is.meant.for.the.user.to
e8a0 20 64 69 73 74 69 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 71 75 65 72 69 65 73 20 61 6e 64 .distinguish.between.queries.and
e8c0 0a 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6d 61 .responses...This.is.an.alist.ma
e8e0 70 70 69 6e 67 20 6d 61 6a 6f 72 20 6d 6f 64 65 73 20 74 6f 20 74 68 65 20 72 65 70 6c 79 20 70 pping.major.modes.to.the.reply.p
e900 72 65 66 69 78 20 73 74 72 69 6e 67 73 2e 20 20 54 68 69 73 0a 69 73 20 6f 6e 6c 79 20 69 6e 73 refix.strings...This.is.only.ins
e920 65 72 74 65 64 20 69 6e 20 64 65 64 69 63 61 74 65 64 20 67 70 74 65 6c 20 62 75 66 66 65 72 73 erted.in.dedicated.gptel.buffers
e940 20 62 65 66 6f 72 65 20 74 68 65 20 41 49 27 73 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 20 3a 67 .before.the.AI's.response."...:g
e960 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 79 roup.'gptel...:type.'(alist.:key
e980 2d 74 79 70 65 20 73 79 6d 62 6f 6c 20 3a 76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e 67 29 -type.symbol.:value-type.string)
e9a0 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c )..(defcustom.gptel-use-header-l
e9c0 69 6e 65 20 74 0a 20 20 22 57 68 65 74 68 65 72 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 73 68 ine.t..."Whether.`gptel-mode'.sh
e9e0 6f 75 6c 64 20 75 73 65 20 68 65 61 64 65 72 2d 6c 69 6e 65 20 66 6f 72 20 73 74 61 74 75 73 20 ould.use.header-line.for.status.
ea00 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 57 68 65 6e 20 73 65 74 20 74 6f 20 6e 69 6c 2c 20 75 information...When.set.to.nil,.u
ea20 73 65 20 74 68 65 20 6d 6f 64 65 20 6c 69 6e 65 20 66 6f 72 20 28 6d 69 6e 69 6d 61 6c 29 20 73 se.the.mode.line.for.(minimal).s
ea40 74 61 74 75 73 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64 20 74 68 65 20 65 63 68 6f 20 61 tatus.information.and.the.echo.a
ea60 72 65 61 20 66 6f 72 20 6d 65 73 73 61 67 65 73 2e 22 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c rea.for.messages."...:type.'bool
ea80 65 61 6e 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d ean...:group.'gptel)..(defcustom
eaa0 20 67 70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f 6e 20 27 28 70 .gptel-display-buffer-action.'(p
eac0 6f 70 2d 74 6f 2d 62 75 66 66 65 72 29 0a 20 20 22 54 68 65 20 61 63 74 69 6f 6e 20 75 73 65 64 op-to-buffer)..."The.action.used
eae0 20 74 6f 20 64 69 73 70 6c 61 79 20 67 70 74 65 6c 20 63 68 61 74 20 62 75 66 66 65 72 73 2e 0a .to.display.gptel.chat.buffers..
eb00 0a 54 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 20 69 73 20 64 69 73 70 6c 61 79 65 64 20 69 .The.gptel.buffer.is.displayed.i
eb20 6e 20 61 20 77 69 6e 64 6f 77 20 75 73 69 6e 67 0a 0a 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 n.a.window.using....(display-buf
eb40 66 65 72 20 42 55 46 46 45 52 20 67 70 74 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d fer.BUFFER.gptel-display-buffer-
eb60 61 63 74 69 6f 6e 29 0a 0a 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6f 70 74 69 6f action)..The.value.of.this.optio
eb80 6e 20 68 61 73 20 74 68 65 20 66 6f 72 6d 20 28 46 55 4e 43 54 49 4f 4e 20 2e 20 41 4c 49 53 54 n.has.the.form.(FUNCTION...ALIST
eba0 29 2c 0a 77 68 65 72 65 20 46 55 4e 43 54 49 4f 4e 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 ),.where.FUNCTION.is.a.function.
ebc0 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 45 61 63 68 20 73 75 or.a.list.of.functions...Each.su
ebe0 63 68 0a 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 61 63 63 65 70 74 20 74 77 6f 20 61 72 ch.function.should.accept.two.ar
ec00 67 75 6d 65 6e 74 73 3a 20 61 20 62 75 66 66 65 72 20 74 6f 20 64 69 73 70 6c 61 79 20 61 6e 64 guments:.a.buffer.to.display.and
ec20 20 61 6e 0a 61 6c 69 73 74 20 6f 66 20 74 68 65 20 73 61 6d 65 20 66 6f 72 6d 20 61 73 20 41 4c .an.alist.of.the.same.form.as.AL
ec40 49 53 54 2e 20 20 53 65 65 20 69 6e 66 6f 20 6e 6f 64 65 20 60 28 65 6c 69 73 70 29 43 68 6f 6f IST...See.info.node.`(elisp)Choo
ec60 73 69 6e 67 0a 57 69 6e 64 6f 77 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 3a 67 72 sing.Window'.for.details."...:gr
ec80 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 oup.'gptel...:type.'(choice.....
eca0 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 55 73 65 20 64 69 73 70 6c 61 79 2d 62 ......(const.:tag."Use.display-b
ecc0 75 66 66 65 72 20 64 65 66 61 75 6c 74 73 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 uffer.defaults".nil)...........(
ece0 63 6f 6e 73 74 20 3a 74 61 67 20 22 44 69 73 70 6c 61 79 20 69 6e 20 73 65 6c 65 63 74 65 64 20 const.:tag."Display.in.selected.
ed00 77 69 6e 64 6f 77 22 20 28 70 6f 70 2d 74 6f 2d 62 75 66 66 65 72 2d 73 61 6d 65 2d 77 69 6e 64 window".(pop-to-buffer-same-wind
ed20 6f 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 3a 74 61 67 20 22 53 70 65 63 69 ow))...........(cons.:tag."Speci
ed40 66 79 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 61 63 74 69 6f 6e 22 0a 20 20 20 20 20 20 fy.display-buffer.action".......
ed60 20 20 20 20 20 28 63 68 6f 69 63 65 20 66 75 6e 63 74 69 6f 6e 20 28 72 65 70 65 61 74 20 3a 74 .....(choice.function.(repeat.:t
ed80 61 67 20 22 46 75 6e 63 74 69 6f 6e 73 22 20 66 75 6e 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 ag."Functions".function)).......
eda0 20 20 20 20 20 61 6c 69 73 74 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d .....alist)))..(defcustom.gptel-
edc0 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 0a 20 20 28 6c 65 74 crowdsourced-prompts-file...(let
ede0 20 28 28 63 61 63 68 65 2d 64 69 72 20 28 6f 72 20 28 67 65 74 65 6e 76 20 22 58 44 47 5f 43 41 .((cache-dir.(or.(getenv."XDG_CA
ee00 43 48 45 5f 48 4f 4d 45 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 CHE_HOME")......................
ee20 20 20 28 67 65 74 65 6e 76 20 22 58 44 47 5f 44 41 54 41 5f 48 4f 4d 45 22 29 0a 20 20 20 20 20 ..(getenv."XDG_DATA_HOME")......
ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 ..................user-emacs-dir
ee60 65 63 74 6f 72 79 29 29 29 0a 20 20 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 ectory))).....(expand-file-name.
ee80 22 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2e 63 73 76 22 "gptel-crowdsourced-prompts.csv"
eea0 20 63 61 63 68 65 2d 64 69 72 29 29 0a 20 20 22 46 69 6c 65 20 75 73 65 64 20 74 6f 20 73 74 6f .cache-dir))..."File.used.to.sto
eec0 72 65 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 2e 0a re.crowdsourced.system.prompts..
eee0 0a 54 68 65 73 65 20 61 72 65 20 70 72 6f 6d 70 74 73 20 63 61 63 68 65 64 20 66 72 6f 6d 20 61 .These.are.prompts.cached.from.a
ef00 6e 20 6f 6e 6c 69 6e 65 20 73 6f 75 72 63 65 20 28 73 65 65 0a 60 67 70 74 65 6c 2d 2d 63 72 6f n.online.source.(see.`gptel--cro
ef20 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 75 72 6c 27 29 2c 20 61 6e 64 20 63 61 6e wdsourced-prompts-url'),.and.can
ef40 20 62 65 20 73 65 74 20 66 72 6f 6d 20 74 68 65 0a 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 .be.set.from.the.transient.menu.
ef60 69 6e 74 65 72 66 61 63 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 60 67 70 74 65 6c 2d 6d 65 6e interface.provided.by.`gptel-men
ef80 75 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 66 69 u'."...:group.'gptel...:type.'fi
efa0 6c 65 29 0a 0a 3b 3b 20 4d 6f 64 65 6c 20 61 6e 64 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 70 61 le)..;;.Model.and.interaction.pa
efc0 72 61 6d 65 74 65 72 73 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 64 69 72 65 63 74 rameters.(defcustom.gptel-direct
efe0 69 76 65 73 0a 20 20 27 28 28 64 65 66 61 75 6c 74 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c ives...'((default..."You.are.a.l
f000 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64 65 6c 20 6c 69 76 69 6e 67 20 69 6e 20 45 6d arge.language.model.living.in.Em
f020 61 63 73 20 61 6e 64 20 61 20 68 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 52 65 73 acs.and.a.helpful.assistant..Res
f040 70 6f 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 0a 20 20 20 20 28 70 72 6f 67 72 61 6d 6d 69 pond.concisely.").....(programmi
f060 6e 67 20 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d ng..."You.are.a.large.language.m
f080 6f 64 65 6c 20 61 6e 64 20 61 20 63 61 72 65 66 75 6c 20 70 72 6f 67 72 61 6d 6d 65 72 2e 20 50 odel.and.a.careful.programmer..P
f0a0 72 6f 76 69 64 65 20 63 6f 64 65 20 61 6e 64 20 6f 6e 6c 79 20 63 6f 64 65 20 61 73 20 6f 75 74 rovide.code.and.only.code.as.out
f0c0 70 75 74 20 77 69 74 68 6f 75 74 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 78 74 2c put.without.any.additional.text,
f0e0 20 70 72 6f 6d 70 74 20 6f 72 20 6e 6f 74 65 2e 22 29 0a 20 20 20 20 28 77 72 69 74 69 6e 67 20 .prompt.or.note.").....(writing.
f100 2e 20 22 59 6f 75 20 61 72 65 20 61 20 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64 65 .."You.are.a.large.language.mode
f120 6c 20 61 6e 64 20 61 20 77 72 69 74 69 6e 67 20 61 73 73 69 73 74 61 6e 74 2e 20 52 65 73 70 6f l.and.a.writing.assistant..Respo
f140 6e 64 20 63 6f 6e 63 69 73 65 6c 79 2e 22 29 0a 20 20 20 20 28 63 68 61 74 20 2e 20 22 59 6f 75 nd.concisely.").....(chat..."You
f160 20 61 72 65 20 61 20 6c 61 72 67 65 20 6c 61 6e 67 75 61 67 65 20 6d 6f 64 65 6c 20 61 6e 64 20 .are.a.large.language.model.and.
f180 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 70 61 72 74 6e 65 72 2e 20 52 65 73 70 6f 6e 64 20 a.conversation.partner..Respond.
f1a0 63 6f 6e 63 69 73 65 6c 79 2e 22 29 29 0a 20 20 22 53 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 concisely."))..."System.prompts.
f1c0 28 64 69 72 65 63 74 69 76 65 73 29 20 66 6f 72 20 74 68 65 20 4c 4c 4d 2e 0a 0a 54 68 65 73 65 (directives).for.the.LLM...These
f1e0 20 61 72 65 20 73 79 73 74 65 6d 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 73 65 6e 74 20 61 74 .are.system.instructions.sent.at
f200 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 65 61 63 68 0a 72 65 71 75 65 73 74 20 74 .the.beginning.of.each.request.t
f220 6f 20 74 68 65 20 4c 4c 4d 2e 0a 0a 45 61 63 68 20 65 6e 74 72 79 20 69 6e 20 74 68 69 73 20 61 o.the.LLM...Each.entry.in.this.a
f240 6c 69 73 74 20 6d 61 70 73 20 61 20 73 79 6d 62 6f 6c 20 6e 61 6d 69 6e 67 20 74 68 65 20 64 69 list.maps.a.symbol.naming.the.di
f260 72 65 63 74 69 76 65 20 74 6f 0a 74 68 65 20 73 74 72 69 6e 67 20 74 68 61 74 20 69 73 20 73 65 rective.to.the.string.that.is.se
f280 6e 74 2e 20 20 54 6f 20 73 65 74 20 74 68 65 20 64 69 72 65 63 74 69 76 65 20 66 6f 72 20 61 20 nt...To.set.the.directive.for.a.
f2a0 63 68 61 74 20 73 65 73 73 69 6f 6e 0a 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c 20 chat.session.interactively.call.
f2c0 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d `gptel-send'.with.a.prefix.argum
f2e0 65 6e 74 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 73 61 66 65 20 23 27 ent."...:group.'gptel...:safe.#'
f300 61 6c 77 61 79 73 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 79 2d 74 79 70 65 always...:type.'(alist.:key-type
f320 20 73 79 6d 62 6f 6c 20 3a 76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 .symbol.:value-type.string))..(d
f340 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 28 61 6c 69 efvar.gptel--system-message.(ali
f360 73 74 2d 67 65 74 20 27 64 65 66 61 75 6c 74 20 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 st-get.'default.gptel-directives
f380 29 0a 20 20 22 54 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 75 73 65 64 20 62 79 20 )..."The.system.message.used.by.
f3a0 67 70 74 65 6c 2e 22 29 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 gptel.").(put.'gptel--system-mes
f3c0 73 61 67 65 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 23 27 61 6c 77 61 sage.'safe-local-variable.#'alwa
f3e0 79 73 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 ys)..(defcustom.gptel-max-tokens
f400 20 6e 69 6c 0a 20 20 22 4d 61 78 20 74 6f 6b 65 6e 73 20 70 65 72 20 72 65 73 70 6f 6e 73 65 2e .nil..."Max.tokens.per.response.
f420 0a 0a 54 68 69 73 20 69 73 20 72 6f 75 67 68 6c 79 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 ..This.is.roughly.the.number.of.
f440 77 6f 72 64 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 20 20 31 30 30 2d 33 30 30 20 words.in.the.response...100-300.
f460 69 73 20 61 0a 72 65 61 73 6f 6e 61 62 6c 65 20 72 61 6e 67 65 20 66 6f 72 20 73 68 6f 72 74 20 is.a.reasonable.range.for.short.
f480 61 6e 73 77 65 72 73 2c 20 34 30 30 20 6f 72 20 6d 6f 72 65 20 66 6f 72 20 6c 6f 6e 67 65 72 0a answers,.400.or.more.for.longer.
f4a0 72 65 73 70 6f 6e 73 65 73 2e 0a 0a 54 6f 20 73 65 74 20 74 68 65 20 74 61 72 67 65 74 20 74 6f responses...To.set.the.target.to
f4c0 6b 65 6e 20 63 6f 75 6e 74 20 66 6f 72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 ken.count.for.a.chat.session.int
f4e0 65 72 61 63 74 69 76 65 6c 79 0a 63 61 6c 6c 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 eractively.call.`gptel-send'.wit
f500 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 2e 22 0a 20 20 3a 73 61 66 65 20 23 27 h.a.prefix.argument."...:safe.#'
f520 61 6c 77 61 79 73 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 always...:group.'gptel...:type.'
f540 28 63 68 6f 69 63 65 20 28 69 6e 74 65 67 65 72 20 3a 74 61 67 20 22 53 70 65 63 69 66 79 20 54 (choice.(integer.:tag."Specify.T
f560 6f 6b 65 6e 20 63 6f 75 6e 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 oken.count")..................(c
f580 6f 6e 73 74 20 3a 74 61 67 20 22 44 65 66 61 75 6c 74 22 20 6e 69 6c 29 29 29 0a 0a 28 64 65 66 onst.:tag."Default".nil)))..(def
f5a0 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 22 67 70 74 2d 33 2e 35 2d 74 75 72 62 custom.gptel-model."gpt-3.5-turb
f5c0 6f 22 0a 20 20 22 47 50 54 20 4d 6f 64 65 6c 20 66 6f 72 20 63 68 61 74 2e 0a 0a 54 68 65 20 6e o"..."GPT.Model.for.chat...The.n
f5e0 61 6d 65 20 6f 66 20 74 68 65 20 6d 6f 64 65 6c 20 61 73 20 61 20 73 74 72 69 6e 67 2e 20 20 54 ame.of.the.model.as.a.string...T
f600 68 69 73 20 69 73 20 74 68 65 20 6e 61 6d 65 20 61 73 20 65 78 70 65 63 74 65 64 0a 62 79 20 74 his.is.the.name.as.expected.by.t
f620 68 65 20 4c 4c 4d 20 70 72 6f 76 69 64 65 72 27 73 20 41 50 49 2e 0a 0a 54 68 65 20 63 75 72 72 he.LLM.provider's.API...The.curr
f640 65 6e 74 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 43 68 61 74 47 50 54 20 61 72 65 0a 2d 20 5c 22 ent.options.for.ChatGPT.are.-.\"
f660 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 5c 22 0a 2d 20 5c 22 67 70 74 2d 33 2e 35 2d 74 75 72 62 gpt-3.5-turbo\".-.\"gpt-3.5-turb
f680 6f 2d 31 36 6b 5c 22 0a 2d 20 5c 22 67 70 74 2d 34 5c 22 0a 2d 20 5c 22 67 70 74 2d 34 2d 74 75 o-16k\".-.\"gpt-4\".-.\"gpt-4-tu
f6a0 72 62 6f 5c 22 0a 2d 20 5c 22 67 70 74 2d 34 2d 74 75 72 62 6f 2d 70 72 65 76 69 65 77 5c 22 0a rbo\".-.\"gpt-4-turbo-preview\".
f6c0 2d 20 5c 22 67 70 74 2d 34 2d 33 32 6b 5c 22 0a 2d 20 5c 22 67 70 74 2d 34 2d 31 31 30 36 2d 70 -.\"gpt-4-32k\".-.\"gpt-4-1106-p
f6e0 72 65 76 69 65 77 5c 22 0a 0a 54 6f 20 73 65 74 20 74 68 65 20 6d 6f 64 65 6c 20 66 6f 72 20 61 review\"..To.set.the.model.for.a
f700 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 63 61 6c 6c .chat.session.interactively.call
f720 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 72 65 66 69 78 20 61 72 67 75 .`gptel-send'.with.a.prefix.argu
f740 6d 65 6e 74 2e 22 0a 20 20 3a 73 61 66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 67 72 6f 75 70 ment."...:safe.#'always...:group
f760 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 .'gptel...:type.'(choice........
f780 20 20 20 28 73 74 72 69 6e 67 20 3a 74 61 67 20 22 53 70 65 63 69 66 79 20 6d 6f 64 65 6c 20 6e ...(string.:tag."Specify.model.n
f7a0 61 6d 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 47 50 54 ame")...........(const.:tag."GPT
f7c0 20 33 2e 35 20 74 75 72 62 6f 22 20 22 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 22 29 0a 20 20 20 .3.5.turbo"."gpt-3.5-turbo")....
f7e0 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 47 50 54 20 33 2e 35 20 74 75 72 62 .......(const.:tag."GPT.3.5.turb
f800 6f 20 31 36 6b 22 20 22 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 2d 31 36 6b 22 29 0a 20 20 20 20 o.16k"."gpt-3.5-turbo-16k").....
f820 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 47 50 54 20 34 22 20 22 67 70 74 2d 34 ......(const.:tag."GPT.4"."gpt-4
f840 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 47 50 54 20 34 20 ")...........(const.:tag."GPT.4.
f860 74 75 72 62 6f 22 20 22 67 70 74 2d 34 2d 74 75 72 62 6f 22 29 0a 20 20 20 20 20 20 20 20 20 20 turbo"."gpt-4-turbo")...........
f880 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 47 50 54 20 34 20 74 75 72 62 6f 20 28 70 72 65 76 69 65 (const.:tag."GPT.4.turbo.(previe
f8a0 77 29 22 20 22 67 70 74 2d 34 2d 74 75 72 62 6f 2d 70 72 65 76 69 65 77 22 29 0a 20 20 20 20 20 w)"."gpt-4-turbo-preview")......
f8c0 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 47 50 54 20 34 20 33 32 6b 22 20 22 67 70 .....(const.:tag."GPT.4.32k"."gp
f8e0 74 2d 34 2d 33 32 6b 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 t-4-32k")...........(const.:tag.
f900 22 47 50 54 20 34 20 31 31 30 36 20 28 70 72 65 76 69 65 77 29 22 20 22 67 70 74 2d 34 2d 31 31 "GPT.4.1106.(preview)"."gpt-4-11
f920 30 36 2d 70 72 65 76 69 65 77 22 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 06-preview")))..(defcustom.gptel
f940 2d 74 65 6d 70 65 72 61 74 75 72 65 20 31 2e 30 0a 20 20 22 5c 22 54 65 6d 70 65 72 61 74 75 72 -temperature.1.0..."\"Temperatur
f960 65 5c 22 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 69 e\".of.the.LLM.response...This.i
f980 73 20 61 20 6e 75 6d 62 65 72 20 62 65 74 77 65 65 6e 20 30 2e 30 20 61 6e 64 20 32 2e 30 20 74 s.a.number.between.0.0.and.2.0.t
f9a0 68 61 74 20 63 6f 6e 74 72 6f 6c 73 20 74 68 65 20 72 61 6e 64 6f 6d 6e 65 73 73 0a 6f 66 20 74 hat.controls.the.randomness.of.t
f9c0 68 65 20 72 65 73 70 6f 6e 73 65 2c 20 77 69 74 68 20 32 2e 30 20 62 65 69 6e 67 20 74 68 65 20 he.response,.with.2.0.being.the.
f9e0 6d 6f 73 74 20 72 61 6e 64 6f 6d 2e 0a 0a 54 6f 20 73 65 74 20 74 68 65 20 74 65 6d 70 65 72 61 most.random...To.set.the.tempera
fa00 74 75 72 65 20 66 6f 72 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 69 6e 74 65 72 61 63 74 ture.for.a.chat.session.interact
fa20 69 76 65 6c 79 20 63 61 6c 6c 0a 60 67 70 74 65 6c 2d 73 65 6e 64 27 20 77 69 74 68 20 61 20 70 ively.call.`gptel-send'.with.a.p
fa40 72 65 66 69 78 20 61 72 67 75 6d 65 6e 74 2e 22 0a 20 20 3a 73 61 66 65 20 23 27 61 6c 77 61 79 refix.argument."...:safe.#'alway
fa60 73 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 79 70 65 20 27 6e 75 6d 62 65 s...:group.'gptel...:type.'numbe
fa80 72 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 r)..(defvar.gptel--known-backend
faa0 73 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 6f 66 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 73 20 6b s.nil..."Alist.of.LLM.backends.k
fac0 6e 6f 77 6e 20 74 6f 20 67 70 74 65 6c 2e 0a 0a 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 nown.to.gptel...This.is.an.alist
fae0 20 6d 61 70 70 69 6e 67 20 75 73 65 72 2d 70 72 6f 76 69 64 65 64 20 6e 61 6d 65 73 20 74 6f 20 .mapping.user-provided.names.to.
fb00 62 61 63 6b 65 6e 64 20 73 74 72 75 63 74 73 2c 0a 73 65 65 20 60 67 70 74 65 6c 2d 62 61 63 6b backend.structs,.see.`gptel-back
fb20 65 6e 64 27 2e 0a 0a 59 6f 75 20 63 61 6e 20 68 61 76 65 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e end'...You.can.have.more.than.on
fb40 65 20 62 61 63 6b 65 6e 64 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 74 68 65 20 73 61 6d 65 20 72 e.backend.pointing.to.the.same.r
fb60 65 73 6f 75 72 63 65 0a 77 69 74 68 20 64 69 66 66 65 72 69 6e 67 20 73 65 74 74 69 6e 67 73 2e esource.with.differing.settings.
fb80 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 0a 20 20 28 67 70 74 ")..(defvar.gptel--openai...(gpt
fba0 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 20 20 22 43 68 61 74 47 50 54 22 0a 20 20 20 3a el-make-openai...."ChatGPT"....:
fbc0 6b 65 79 20 27 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 0a 20 20 20 3a 73 74 72 65 61 6d 20 74 0a key.'gptel-api-key....:stream.t.
fbe0 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 22 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 22 20 22 67 70 ...:models.'("gpt-3.5-turbo"."gp
fc00 74 2d 33 2e 35 2d 74 75 72 62 6f 2d 31 36 6b 22 20 22 67 70 74 2d 34 22 20 22 67 70 74 2d 34 2d t-3.5-turbo-16k"."gpt-4"."gpt-4-
fc20 74 75 72 62 6f 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 67 70 74 2d 34 2d 74 75 72 62 6f turbo".............."gpt-4-turbo
fc40 2d 70 72 65 76 69 65 77 22 20 22 67 70 74 2d 34 2d 33 32 6b 22 20 22 67 70 74 2d 34 2d 31 31 30 -preview"."gpt-4-32k"."gpt-4-110
fc60 36 2d 70 72 65 76 69 65 77 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 67 70 74 2d 34 2d 30 6-preview".............."gpt-4-0
fc80 31 32 35 2d 70 72 65 76 69 65 77 22 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 125-preview")))..(defcustom.gpte
fca0 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 0a 20 20 22 4c 4c 4d 20 62 l-backend.gptel--openai..."LLM.b
fcc0 61 63 6b 65 6e 64 20 74 6f 20 75 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 ackend.to.use...This.is.the.defa
fce0 75 6c 74 20 5c 22 62 61 63 6b 65 6e 64 5c 22 2c 20 61 6e 20 6f 62 6a 65 63 74 20 6f 66 20 74 79 ult.\"backend\",.an.object.of.ty
fd00 70 65 0a 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20 63 6f 6e 74 61 69 6e 69 6e 67 20 63 6f pe.`gptel-backend'.containing.co
fd20 6e 6e 65 63 74 69 6f 6e 2c 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 61 6e 64 20 6d 6f 64 nnection,.authentication.and.mod
fd40 65 6c 0a 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 41 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 43 el.information...A.backend.for.C
fd60 68 61 74 47 50 54 20 69 73 20 70 72 65 2d 64 65 66 69 6e 65 64 20 62 79 20 67 70 74 65 6c 2e 20 hatGPT.is.pre-defined.by.gptel..
fd80 20 42 61 63 6b 65 6e 64 73 20 66 6f 72 0a 6f 74 68 65 72 20 4c 4c 4d 20 70 72 6f 76 69 64 65 72 .Backends.for.other.LLM.provider
fda0 73 20 28 6c 6f 63 61 6c 20 6f 72 20 72 65 6d 6f 74 65 29 20 6d 61 79 20 62 65 20 63 6f 6e 73 74 s.(local.or.remote).may.be.const
fdc0 72 75 63 74 65 64 20 75 73 69 6e 67 0a 6f 6e 65 20 6f 66 20 74 68 65 20 61 76 61 69 6c 61 62 6c ructed.using.one.of.the.availabl
fde0 65 20 62 61 63 6b 65 6e 64 20 63 72 65 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 3a 0a 2d 20 e.backend.creation.functions:.-.
fe00 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b `gptel-make-openai'.-.`gptel-mak
fe20 65 2d 61 7a 75 72 65 27 0a 2d 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 27 0a 2d e-azure'.-.`gptel-make-ollama'.-
fe40 20 60 67 70 74 65 6c 2d 6d 61 6b 65 2d 67 70 74 34 61 6c 6c 27 0a 2d 20 60 67 70 74 65 6c 2d 6d .`gptel-make-gpt4all'.-.`gptel-m
fe60 61 6b 65 2d 67 65 6d 69 6e 69 27 0a 53 65 65 20 74 68 65 69 72 20 64 6f 63 75 6d 65 6e 74 61 74 ake-gemini'.See.their.documentat
fe80 69 6f 6e 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 6e 64 20 74 68 65 ion.for.more.information.and.the
fea0 20 70 61 63 6b 61 67 65 0a 52 45 41 44 4d 45 20 66 6f 72 20 65 78 61 6d 70 6c 65 73 2e 22 0a 20 .package.README.for.examples."..
fec0 20 3a 73 61 66 65 20 23 27 61 6c 77 61 79 73 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a .:safe.#'always...:group.'gptel.
fee0 20 20 3a 74 79 70 65 20 60 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 ..:type.`(choice...........(cons
ff00 74 20 3a 74 61 67 20 22 43 68 61 74 47 50 54 22 20 2c 67 70 74 65 6c 2d 2d 6f 70 65 6e 61 69 29 t.:tag."ChatGPT".,gptel--openai)
ff20 0a 20 20 20 20 20 20 20 20 20 20 28 72 65 73 74 72 69 63 74 65 64 2d 73 65 78 70 20 3a 6d 61 74 ...........(restricted-sexp.:mat
ff40 63 68 2d 61 6c 74 65 72 6e 61 74 69 76 65 73 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 70 ch-alternatives.(gptel-backend-p
ff60 20 27 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 74 61 67 20 22 4f 74 68 65 72 20 62 61 .'nil)............:tag."Other.ba
ff80 63 6b 65 6e 64 22 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d ckend")))..(defvar.gptel-expert-
ffa0 63 6f 6d 6d 61 6e 64 73 20 6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 65 78 70 65 72 69 6d 65 commands.nil..."Whether.experime
ffc0 6e 74 61 6c 20 67 70 74 65 6c 20 6f 70 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 62 65 20 65 6e 61 ntal.gptel.options.should.be.ena
ffe0 62 6c 65 64 2e 0a 0a 54 68 69 73 20 6f 70 65 6e 73 20 75 70 20 61 64 76 61 6e 63 65 64 20 6f 70 bled...This.opens.up.advanced.op
10000 74 69 6f 6e 73 20 69 6e 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 22 29 0a 0a 28 64 65 66 76 61 tions.in.`gptel-menu'.")..(defva
10020 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 20 6e 69 6c 29 0a 28 70 75 74 20 r-local.gptel--bounds.nil).(put.
10040 27 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 'gptel--bounds.'safe-local-varia
10060 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 6e 75 ble.#'always)..(defvar.gptel--nu
10080 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 20 6e 69 6c 29 0a 28 70 75 74 20 27 67 70 m-messages-to-send.nil).(put.'gp
100a0 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 20 27 73 61 66 65 2d tel--num-messages-to-send.'safe-
100c0 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 23 27 61 6c 77 61 79 73 29 0a 0a 28 64 65 66 63 75 local-variable.#'always)..(defcu
100e0 73 74 6f 6d 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 6e 69 6c 0a 20 20 22 4c 6f 67 67 stom.gptel-log-level.nil..."Logg
10100 69 6e 67 20 6c 65 76 65 6c 20 66 6f 72 20 67 70 74 65 6c 2e 0a 0a 54 68 69 73 20 69 73 20 6f 6e ing.level.for.gptel...This.is.on
10120 65 20 6f 66 20 6e 69 6c 20 6f 72 20 74 68 65 20 73 79 6d 62 6f 6c 73 20 69 6e 66 6f 20 61 6e 64 e.of.nil.or.the.symbols.info.and
10140 20 64 65 62 75 67 3a 0a 0a 6e 69 6c 3a 20 44 6f 6e 27 74 20 6c 6f 67 20 72 65 73 70 6f 6e 73 65 .debug:..nil:.Don't.log.response
10160 73 0a 69 6e 66 6f 3a 20 4c 6f 67 20 72 65 71 75 65 73 74 20 61 6e 64 20 72 65 73 70 6f 6e 73 65 s.info:.Log.request.and.response
10180 20 62 6f 64 69 65 73 0a 64 65 62 75 67 3a 20 4c 6f 67 20 72 65 71 75 65 73 74 2f 72 65 73 70 6f .bodies.debug:.Log.request/respo
101a0 6e 73 65 20 62 6f 64 69 65 73 2c 20 68 65 61 64 65 72 73 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 nse.bodies,.headers.and.all.othe
101c0 72 0a 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 65 74 74 69 6e 67 73 2e 0a 0a 57 r........connection.settings...W
101e0 68 65 6e 20 6e 6f 6e 2d 6e 69 6c 2c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6c 6f 67 67 hen.non-nil,.information.is.logg
10200 65 64 20 74 6f 20 60 67 70 74 65 6c 2d 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6e 61 6d 65 27 2c 0a ed.to.`gptel--log-buffer-name',.
10220 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 67 70 74 65 6c 0a 20 20 3a 74 which.see."...:group.'gptel...:t
10240 79 70 65 20 27 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 ype.'(choice...........(const.:t
10260 61 67 20 22 4e 6f 20 6c 6f 67 67 69 6e 67 22 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 ag."No.logging".nil)...........(
10280 63 6f 6e 73 74 20 3a 74 61 67 20 22 4c 69 6d 69 74 65 64 22 20 69 6e 66 6f 29 0a 20 20 20 20 20 const.:tag."Limited".info)......
102a0 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 46 75 6c 6c 22 20 64 65 62 75 67 29 29 29 .....(const.:tag."Full".debug)))
102c0 0a 28 6d 61 6b 65 2d 6f 62 73 6f 6c 65 74 65 2d 76 61 72 69 61 62 6c 65 0a 20 27 67 70 74 65 6c .(make-obsolete-variable..'gptel
102e0 2d 2d 64 65 62 75 67 20 27 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 22 30 2e 36 2e 35 22 --debug.'gptel-log-level."0.6.5"
10300 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 )..(defvar-local.gptel--old-head
10320 65 72 2d 6c 69 6e 65 20 6e 69 6c 29 0a 0a 0c 0a 3b 3b 20 55 74 69 6c 69 74 79 20 66 75 6e 63 74 er-line.nil)....;;.Utility.funct
10340 69 6f 6e 73 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 2d 66 72 6f 6d 2d ions..(defun.gptel-api-key-from-
10360 61 75 74 68 2d 73 6f 75 72 63 65 20 28 26 6f 70 74 69 6f 6e 61 6c 20 68 6f 73 74 20 75 73 65 72 auth-source.(&optional.host.user
10380 29 0a 20 20 22 4c 6f 6f 6b 75 70 20 61 70 69 20 6b 65 79 20 69 6e 20 74 68 65 20 61 75 74 68 20 )..."Lookup.api.key.in.the.auth.
103a0 73 6f 75 72 63 65 2e 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 4c 4c 4d 20 68 6f 73 74 source..By.default,.the.LLM.host
103c0 20 66 6f 72 20 74 68 65 20 61 63 74 69 76 65 20 62 61 63 6b 65 6e 64 20 69 73 20 75 73 65 64 20 .for.the.active.backend.is.used.
103e0 61 73 20 48 4f 53 54 2c 0a 61 6e 64 20 5c 22 61 70 69 6b 65 79 5c 22 20 61 73 20 55 53 45 52 2e as.HOST,.and.\"apikey\".as.USER.
10400 22 0a 20 20 28 69 66 2d 6c 65 74 20 28 28 73 65 63 72 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 "...(if-let.((secret............
10420 20 28 70 6c 69 73 74 2d 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 28 61 .(plist-get..............(car.(a
10440 75 74 68 2d 73 6f 75 72 63 65 2d 73 65 61 72 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uth-source-search...............
10460 20 20 20 20 20 3a 68 6f 73 74 20 28 6f 72 20 68 6f 73 74 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 .....:host.(or.host.(gptel-backe
10480 6e 64 2d 68 6f 73 74 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 nd-host.gptel-backend)).........
104a0 20 20 20 20 20 20 20 20 20 20 20 3a 75 73 65 72 20 28 6f 72 20 75 73 65 72 20 22 61 70 69 6b 65 ...........:user.(or.user."apike
104c0 79 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 71 75 69 72 65 20 y")....................:require.
104e0 27 28 3a 73 65 63 72 65 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 '(:secret)))....................
10500 20 20 20 20 20 20 20 20 20 20 20 3a 73 65 63 72 65 74 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 ...........:secret))).......(if.
10520 28 66 75 6e 63 74 69 6f 6e 70 20 73 65 63 72 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e (functionp.secret)...........(en
10540 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 20 28 66 75 6e 63 61 6c 6c 20 73 65 63 72 code-coding-string.(funcall.secr
10560 65 74 29 20 27 75 74 66 2d 38 29 0a 20 20 20 20 20 20 20 20 73 65 63 72 65 74 29 0a 20 20 20 20 et).'utf-8).........secret).....
10580 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 (user-error."No.`gptel-api-key'.
105a0 66 6f 75 6e 64 20 69 6e 20 74 68 65 20 61 75 74 68 20 73 6f 75 72 63 65 22 29 29 29 0a 0a 3b 3b found.in.the.auth.source")))..;;
105c0 20 46 49 58 4d 45 20 53 68 6f 75 6c 64 20 77 65 20 75 74 66 2d 38 20 65 6e 63 6f 64 65 20 74 68 .FIXME.Should.we.utf-8.encode.th
105e0 65 20 61 70 69 2d 6b 65 79 20 68 65 72 65 3f 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 e.api-key.here?.(defun.gptel--ge
10600 74 2d 61 70 69 2d 6b 65 79 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6b 65 79 29 0a 20 20 22 47 65 74 t-api-key.(&optional.key)..."Get
10620 20 61 70 69 20 6b 65 79 20 66 72 6f 6d 20 4b 45 59 2c 20 6f 72 20 66 72 6f 6d 20 60 67 70 74 65 .api.key.from.KEY,.or.from.`gpte
10640 6c 2d 61 70 69 2d 6b 65 79 27 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6b 65 79 2d l-api-key'."...(when-let*.((key-
10660 73 79 6d 20 28 6f 72 20 6b 65 79 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6b 65 79 20 67 sym.(or.key.(gptel-backend-key.g
10680 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 0a 20 20 20 20 28 63 6c 2d 74 79 70 65 63 61 73 ptel-backend)))).....(cl-typecas
106a0 65 20 6b 65 79 2d 73 79 6d 0a 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 20 28 66 75 6e 63 61 e.key-sym.......(function.(funca
106c0 6c 6c 20 6b 65 79 2d 73 79 6d 29 29 0a 20 20 20 20 20 20 28 73 74 72 69 6e 67 20 6b 65 79 2d 73 ll.key-sym)).......(string.key-s
106e0 79 6d 29 0a 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 20 28 69 66 2d 6c 65 74 20 28 28 76 61 6c 20 ym).......(symbol.(if-let.((val.
10700 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 6b 65 79 2d 73 79 6d 29 29 29 0a 20 20 20 20 20 20 20 (symbol-value.key-sym)))........
10720 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 0a 20 ...........(gptel--get-api-key..
10740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 ..................(symbol-value.
10760 6b 65 79 2d 73 79 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 key-sym)).................(error
10780 20 22 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 69 73 20 6e 6f 74 20 76 61 6c 69 64 22 29 ."`gptel-api-key'.is.not.valid")
107a0 29 29 0a 20 20 20 20 20 20 28 74 20 28 65 72 72 6f 72 20 22 60 67 70 74 65 6c 2d 61 70 69 2d 6b )).......(t.(error."`gptel-api-k
107c0 65 79 27 20 69 73 20 6e 6f 74 20 76 61 6c 69 64 22 29 29 29 29 29 0a 0a 28 64 65 66 73 75 62 73 ey'.is.not.valid")))))..(defsubs
107e0 74 20 67 70 74 65 6c 2d 2d 6e 75 6d 62 65 72 69 7a 65 20 28 76 61 6c 29 0a 20 20 22 45 6e 73 75 t.gptel--numberize.(val)..."Ensu
10800 72 65 20 56 41 4c 20 69 73 20 61 20 6e 75 6d 62 65 72 2e 22 0a 20 20 28 69 66 20 28 73 74 72 69 re.VAL.is.a.number."...(if.(stri
10820 6e 67 70 20 76 61 6c 29 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 20 76 61 6c 29 20 ngp.val).(string-to-number.val).
10840 76 61 6c 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 61 75 74 6f 2d 73 63 72 6f 6c 6c 20 val))..(defun.gptel-auto-scroll.
10860 28 29 0a 20 20 22 53 63 72 6f 6c 6c 20 77 69 6e 64 6f 77 20 69 66 20 4c 4c 4d 20 72 65 73 70 6f ()..."Scroll.window.if.LLM.respo
10880 6e 73 65 20 63 6f 6e 74 69 6e 75 65 73 20 62 65 6c 6f 77 20 76 69 65 77 70 6f 72 74 2e 0a 0a 4e nse.continues.below.viewport...N
108a0 6f 74 65 3a 20 54 68 69 73 20 77 69 6c 6c 20 6d 6f 76 65 20 74 68 65 20 63 75 72 73 6f 72 2e 22 ote:.This.will.move.the.cursor."
108c0 0a 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 77 69 6e 20 28 67 65 74 2d 62 75 66 66 65 72 2d ...(when-let*.((win.(get-buffer-
108e0 77 69 6e 64 6f 77 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 27 76 69 73 69 62 6c 65 window.(current-buffer).'visible
10900 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 28 70 6f 73 2d 76 69 73 69 ))...............((not.(pos-visi
10920 62 6c 65 2d 69 6e 2d 77 69 6e 64 6f 77 2d 70 20 28 70 6f 69 6e 74 29 20 77 69 6e 29 29 29 0a 20 ble-in-window-p.(point).win)))..
10940 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 63 72 6f 6c 6c 2d 65 72 72 6f 72 2d 74 6f 70 2d 62 .............(scroll-error-top-b
10960 6f 74 74 6f 6d 20 74 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 ottom.t)).....(condition-case.ni
10980 6c 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 l.........(with-selected-window.
109a0 77 69 6e 0a 20 20 20 20 20 20 20 20 20 20 28 73 63 72 6f 6c 6c 2d 75 70 2d 63 6f 6d 6d 61 6e 64 win...........(scroll-up-command
109c0 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 6e 69 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 )).......(error.nil))))..(defun.
109e0 67 70 74 65 6c 2d 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 20 28 26 6f 70 gptel-beginning-of-response.(&op
10a00 74 69 6f 6e 61 6c 20 5f 20 5f 20 61 72 67 29 0a 20 20 22 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f tional._._.arg)..."Move.point.to
10a20 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e .the.beginning.of.the.LLM.respon
10a40 73 65 20 41 52 47 20 74 69 6d 65 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70 se.ARG.times."...(interactive."p
10a60 22 29 0a 20 20 3b 3b 20 46 49 58 4d 45 3a 20 4f 6e 6c 79 20 77 6f 72 6b 73 20 66 6f 72 20 61 72 ")...;;.FIXME:.Only.works.for.ar
10a80 67 20 3d 3d 20 31 0a 20 20 28 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 20 g.==.1...(gptel-end-of-response.
10aa0 6e 69 6c 20 6e 69 6c 20 28 2d 20 28 6f 72 20 61 72 67 20 31 29 29 29 29 0a 0a 28 64 65 66 75 6e nil.nil.(-.(or.arg.1))))..(defun
10ac0 20 67 70 74 65 6c 2d 65 6e 64 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 20 28 26 6f 70 74 69 6f 6e 61 .gptel-end-of-response.(&optiona
10ae0 6c 20 5f 20 5f 20 61 72 67 29 0a 20 20 22 4d 6f 76 65 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 l._._.arg)..."Move.point.to.the.
10b00 65 6e 64 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 20 41 52 47 20 74 69 6d 65 end.of.the.LLM.response.ARG.time
10b20 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 6e 69 6c 20 6e 69 6c s."...(interactive.(list.nil.nil
10b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 66 69 78 2d 6e 75 ......................(prefix-nu
10b60 6d 65 72 69 63 2d 76 61 6c 75 65 20 63 75 72 72 65 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 29 29 meric-value.current-prefix-arg))
10b80 29 0a 20 20 28 75 6e 6c 65 73 73 20 61 72 67 20 28 73 65 74 71 20 61 72 67 20 31 29 29 0a 20 20 )...(unless.arg.(setq.arg.1))...
10ba0 28 6c 65 74 20 28 28 73 65 61 72 63 68 20 28 69 66 20 28 3e 20 61 72 67 20 30 29 0a 20 20 20 20 (let.((search.(if.(>.arg.0).....
10bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d ................#'text-property-
10be0 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 search-forward..................
10c00 20 23 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 .#'text-property-search-backward
10c20 29 29 29 0a 20 20 20 20 28 64 6f 74 69 6d 65 73 20 28 5f 20 28 61 62 73 20 61 72 67 29 29 0a 20 ))).....(dotimes.(_.(abs.arg))..
10c40 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 61 72 63 68 20 27 67 70 74 65 6c 20 27 72 65 73 .....(funcall.search.'gptel.'res
10c60 70 6f 6e 73 65 20 74 29 0a 20 20 20 20 20 20 28 69 66 20 28 3e 20 61 72 67 20 30 29 0a 20 20 20 ponse.t).......(if.(>.arg.0)....
10c80 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 28 63 6f 6e 63 61 74 .......(when.(looking-at.(concat
10ca0 20 22 5c 6e 5c 5c 7b 31 2c 32 5c 5c 7d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ."\n\\{1,2\\}"..................
10cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 ...................(regexp-quote
10ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
10d00 20 20 20 20 20 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e ......(gptel-prompt-prefix-strin
10d20 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g)).............................
10d40 20 20 20 20 20 20 20 20 22 3f 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d ........"?")).............(goto-
10d60 63 68 61 72 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 char.(match-end.0))).........(wh
10d80 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 28 63 6f 6e 63 61 74 20 28 72 65 67 65 78 70 en.(looking-back.(concat.(regexp
10da0 2d 71 75 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -quote..........................
10dc0 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 ............(gptel-response-pref
10de0 69 78 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ix-string)).....................
10e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3f 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 ................"?")............
10e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 .................(point-min))...
10e40 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e ........(goto-char.(match-beginn
10e60 69 6e 67 20 30 29 29 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 67 70 74 65 6c 2d 2d 61 ing.0)))))))..(defmacro.gptel--a
10e80 74 2d 77 6f 72 64 2d 65 6e 64 20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 45 78 65 63 75 t-word-end.(&rest.body)..."Execu
10ea0 74 65 20 42 4f 44 59 20 61 74 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 77 6f te.BODY.at.end.of.the.current.wo
10ec0 72 64 20 6f 72 20 70 75 6e 63 74 75 61 74 69 6f 6e 2e 22 0a 20 20 60 28 73 61 76 65 2d 65 78 63 rd.or.punctuation."...`(save-exc
10ee0 75 72 73 69 6f 6e 0a 20 20 20 20 20 28 73 6b 69 70 2d 73 79 6e 74 61 78 2d 66 6f 72 77 61 72 64 ursion......(skip-syntax-forward
10f00 20 22 77 2e 22 29 0a 20 20 20 20 20 2c 40 62 6f 64 79 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 ."w.")......,@body))..(defun.gpt
10f20 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 20 28 29 0a 20 20 28 6f 72 el-prompt-prefix-string.()...(or
10f40 20 28 61 6c 69 73 74 2d 67 65 74 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 70 72 6f .(alist-get.major-mode.gptel-pro
10f60 6d 70 74 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 29 20 22 22 29 29 0a 0a 28 64 65 66 75 6e 20 67 mpt-prefix-alist).""))..(defun.g
10f80 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 20 28 29 0a 20 ptel-response-prefix-string.()..
10fa0 20 28 6f 72 20 28 61 6c 69 73 74 2d 67 65 74 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c .(or.(alist-get.major-mode.gptel
10fc0 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 61 6c 69 73 74 29 20 22 22 29 29 0a 0a 28 64 -response-prefix-alist).""))..(d
10fe0 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 efvar-local.gptel--backend-name.
11000 6e 69 6c 0a 20 20 22 53 74 6f 72 65 20 74 6f 20 70 65 72 73 69 73 74 20 62 61 63 6b 65 6e 64 20 nil..."Store.to.persist.backend.
11020 6e 61 6d 65 20 61 63 72 6f 73 73 20 45 6d 61 63 73 20 73 65 73 73 69 6f 6e 73 2e 0a 0a 4e 6f 74 name.across.Emacs.sessions...Not
11040 65 3a 20 43 68 61 6e 67 69 6e 67 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 20 64 6f 65 73 20 6e e:.Changing.this.variable.does.n
11060 6f 74 20 61 66 66 65 63 74 20 67 70 74 65 6c 5c 5c 3d 27 73 20 62 65 68 61 76 69 6f 72 0a 69 6e ot.affect.gptel\\='s.behavior.in
11080 20 61 6e 79 20 77 61 79 2e 22 29 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 .any.way.").(put.'gptel--backend
110a0 2d 6e 61 6d 65 20 27 73 61 66 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 23 27 61 6c 77 -name.'safe-local-variable.#'alw
110c0 61 79 73 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 ays)..(defun.gptel--get-buffer-b
110e0 6f 75 6e 64 73 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 67 70 74 65 6c 20 72 65 73 ounds.()..."Return.the.gptel.res
11100 70 6f 6e 73 65 20 62 6f 75 6e 64 61 72 69 65 73 20 69 6e 20 74 68 65 20 62 75 66 66 65 72 20 61 ponse.boundaries.in.the.buffer.a
11120 73 20 61 6e 20 61 6c 69 73 74 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 s.an.alist."...(save-excursion..
11140 20 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 28 77 69 64 65 ...(save-restriction.......(wide
11160 6e 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 n).......(goto-char.(point-max))
11180 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 72 6f 70 29 20 28 62 6f 75 6e 64 73 29 29 0a 20 20 .......(let.((prop).(bounds))...
111a0 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 73 65 74 71 20 70 72 6f 70 20 28 74 65 78 74 2d 70 72 ......(while.(setq.prop.(text-pr
111c0 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 operty-search-backward..........
111e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e ..................'gptel.'respon
11200 73 65 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 28 63 6f 6e 73 20 28 70 72 se.t))...........(push.(cons.(pr
11220 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 70 72 6f 70 29 0a 20 20 20 20 20 20 20 op-match-beginning.prop)........
11240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 ...............(prop-match-end.p
11260 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 75 6e 64 73 29 29 0a 20 rop)).................bounds))..
11280 20 20 20 20 20 20 20 62 6f 75 6e 64 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d .......bounds))))..(defun.gptel-
112a0 2d 67 65 74 2d 62 6f 75 6e 64 73 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 67 70 74 -get-bounds.()..."Return.the.gpt
112c0 65 6c 20 72 65 73 70 6f 6e 73 65 20 62 6f 75 6e 64 61 72 69 65 73 20 61 72 6f 75 6e 64 20 70 6f el.response.boundaries.around.po
112e0 69 6e 74 2e 22 0a 20 20 28 6c 65 74 20 28 70 72 6f 70 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 int."...(let.(prop).....(save-ex
11300 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 74 65 78 74 2d 70 72 6f 70 65 72 cursion.......(when.(text-proper
11320 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ty-search-backward..............
11340 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 20 74 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 'gptel.'response.t).........(whe
11360 6e 20 28 73 65 74 71 20 70 72 6f 70 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 n.(setq.prop.(text-property-sear
11380 63 68 2d 66 6f 72 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ch-forward......................
113a0 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 20 74 29 29 0a 20 20 20 20 20 20 .....'gptel.'response.t)).......
113c0 20 20 20 20 28 63 6f 6e 73 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 ....(cons.(prop-match-beginning.
113e0 70 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f prop).......................(pro
11400 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 72 6f 70 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 p-match-end.prop)))))))..(defun.
11420 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 20 28 26 6f 70 74 69 6f 6e 61 6c 20 gptel--in-response-p.(&optional.
11440 70 74 29 0a 20 20 22 43 68 65 63 6b 20 69 66 20 70 6f 73 69 74 69 6f 6e 20 50 54 20 69 73 20 69 pt)..."Check.if.position.PT.is.i
11460 6e 73 69 64 65 20 61 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 20 28 67 65 74 2d nside.a.gptel.response."...(get-
11480 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6f 72 20 70 74 20 28 70 6f 69 6e 74 29 29 20 27 67 char-property.(or.pt.(point)).'g
114a0 70 74 65 6c 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 ptel))..(defun.gptel--at-respons
114c0 65 2d 68 69 73 74 6f 72 79 2d 70 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 22 43 68 e-history-p.(&optional.pt)..."Ch
114e0 65 63 6b 20 69 66 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 73 69 74 69 6f eck.if.gptel.response.at.positio
11500 6e 20 50 54 20 68 61 73 20 76 61 72 69 61 6e 74 73 2e 22 0a 20 20 28 67 65 74 2d 63 68 61 72 2d n.PT.has.variants."...(get-char-
11520 70 72 6f 70 65 72 74 79 20 28 6f 72 20 70 74 20 28 70 6f 69 6e 74 29 29 20 27 67 70 74 65 6c 2d property.(or.pt.(point)).'gptel-
11540 68 69 73 74 6f 72 79 29 29 0a 0a 0c 0a 3b 3b 20 4c 6f 67 67 69 6e 67 0a 0a 28 64 65 66 63 6f 6e history))....;;.Logging..(defcon
11560 73 74 20 67 70 74 65 6c 2d 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6e 61 6d 65 20 22 2a 67 70 74 65 st.gptel--log-buffer-name."*gpte
11580 6c 2d 6c 6f 67 2a 22 0a 20 20 22 4c 6f 67 20 62 75 66 66 65 72 20 66 6f 72 20 67 70 74 65 6c 2e l-log*"..."Log.buffer.for.gptel.
115a0 22 29 0a 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 70 72 65 74 74 ")..(declare-function.json-prett
115c0 79 2d 70 72 69 6e 74 20 22 6a 73 6f 6e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 6c y-print."json")..(defun.gptel--l
115e0 6f 67 20 28 64 61 74 61 20 26 6f 70 74 69 6f 6e 61 6c 20 74 79 70 65 20 6e 6f 2d 6a 73 6f 6e 29 og.(data.&optional.type.no-json)
11600 0a 20 20 22 4c 6f 67 20 44 41 54 41 20 74 6f 20 60 67 70 74 65 6c 2d 2d 6c 6f 67 2d 62 75 66 66 ..."Log.DATA.to.`gptel--log-buff
11620 65 72 2d 6e 61 6d 65 27 2e 0a 0a 54 59 50 45 20 69 73 20 61 20 6c 61 62 65 6c 20 66 6f 72 20 64 er-name'...TYPE.is.a.label.for.d
11640 61 74 61 20 62 65 69 6e 67 20 6c 6f 67 67 65 64 2e 20 20 44 41 54 41 20 69 73 20 61 73 73 75 6d ata.being.logged...DATA.is.assum
11660 65 64 20 74 6f 20 62 65 0a 56 61 6c 69 64 20 4a 53 4f 4e 20 75 6e 6c 65 73 73 20 4e 4f 2d 4a 53 ed.to.be.Valid.JSON.unless.NO-JS
11680 4f 4e 20 69 73 20 74 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 ON.is.t."...(with-current-buffer
116a0 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 67 70 74 65 6c 2d 2d 6c 6f 67 2d 62 .(get-buffer-create.gptel--log-b
116c0 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 28 6c 65 74 20 28 28 70 20 28 67 6f 74 6f 2d 63 uffer-name).....(let.((p.(goto-c
116e0 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 har.(point-max)))).......(unless
11700 20 28 62 6f 62 70 29 20 28 69 6e 73 65 72 74 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 28 69 6e .(bobp).(insert."\n")).......(in
11720 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 7b 5c 22 67 70 74 65 6c 5c 22 3a 20 5c 22 25 73 5c 22 sert.(format."{\"gptel\":.\"%s\"
11740 2c 20 22 20 28 6f 72 20 74 79 70 65 20 22 6e 6f 6e 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 ,.".(or.type."none"))...........
11760 20 20 20 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 5c 22 74 69 6d 65 73 ....(format-time-string."\"times
11780 74 61 6d 70 5c 22 3a 20 5c 22 25 59 2d 25 6d 2d 25 64 20 25 48 3a 25 4d 3a 25 53 5c 22 7d 5c 6e tamp\":.\"%Y-%m-%d.%H:%M:%S\"}\n
117a0 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 29 0a 20 20 20 20 20 20 28 75 6e ")...............data).......(un
117c0 6c 65 73 73 20 6e 6f 2d 6a 73 6f 6e 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 6a 73 6f less.no-json.(ignore-errors.(jso
117e0 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e 74 20 70 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 0a 0a n-pretty-print.p.(point)))))))..
11800 0c 0a 3b 3b 20 53 61 76 69 6e 67 20 61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 73 74 61 74 65 0a ..;;.Saving.and.restoring.state.
11820 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 20 28 29 0a .(defun.gptel--restore-state.().
11840 20 20 22 52 65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 74 61 74 65 20 77 68 65 6e 20 74 75 72 6e .."Restore.gptel.state.when.turn
11860 69 6e 67 20 6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 77 68 65 6e 20 28 62 ing.on.`gptel-mode'."...(when.(b
11880 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20 20 28 70 63 61 73 65 20 6d 61 6a 6f uffer-file-name).....(pcase.majo
118a0 72 2d 6d 6f 64 65 0a 20 20 20 20 20 20 28 27 6f 72 67 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 28 r-mode.......('org-mode........(
118c0 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 72 67 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 require.'gptel-org)........(gpte
118e0 6c 2d 6f 72 67 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 29 29 0a 20 20 20 20 20 20 28 5f 20 l-org--restore-state)).......(_.
11900 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 28 (when.gptel--bounds............(
11920 6d 61 70 63 20 28 70 63 61 73 65 2d 6c 61 6d 62 64 61 20 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e mapc.(pcase-lambda.(`(,beg...,en
11940 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 d))..........................(pu
11960 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 62 65 67 20 65 6e 64 20 27 67 70 74 65 6c 20 27 t-text-property.beg.end.'gptel.'
11980 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 response))..................gpte
119a0 6c 2d 2d 62 6f 75 6e 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 l--bounds)............(message."
119c0 67 70 74 65 6c 20 63 68 61 74 20 72 65 73 74 6f 72 65 64 2e 22 29 29 0a 20 20 20 20 20 20 20 20 gptel.chat.restored.")).........
119e0 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 .(when.gptel--backend-name......
11a00 20 20 20 20 20 20 28 69 66 2d 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 61 6c 69 73 74 2d 67 ......(if-let.((backend.(alist-g
11a20 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 et..............................
11a40 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 .gptel--backend-name.gptel--know
11a60 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n-backends......................
11a80 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 29 29 0a 20 20 20 20 .........nil.nil.#'equal))).....
11aa0 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 62 61 63 ...........(setq-local.gptel-bac
11ac0 6b 65 6e 64 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 kend.backend)..............(mess
11ae0 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 age................(substitute-c
11b00 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e ommand-keys.................(con
11b20 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 cat.................."Could.not.
11b40 61 63 74 69 76 61 74 65 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 5c 22 25 73 5c 22 21 20 20 activate.gptel.backend.\"%s\"!..
11b60 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 77 69 74 63 68 20 62 61 63 6b 65 ".................."Switch.backe
11b80 6e 64 73 20 77 69 74 68 20 5c 5c 5b 75 6e 69 76 65 72 73 61 6c 2d 61 72 67 75 6d 65 6e 74 5d 20 nds.with.\\[universal-argument].
11ba0 5c 5c 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \\[gptel-send]".................
11bc0 20 22 20 62 65 66 6f 72 65 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 22 29 29 0a 20 20 20 20 20 20 .".before.using.gptel.")).......
11be0 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 29 29 .........gptel--backend-name))))
11c00 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 73 61 76 65 2d 73 74 61 74 65 20 28 29 )))..(defun.gptel--save-state.()
11c20 0a 20 20 22 57 72 69 74 65 20 74 68 65 20 67 70 74 65 6c 20 73 74 61 74 65 20 74 6f 20 74 68 65 ..."Write.the.gptel.state.to.the
11c40 20 62 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 73 61 76 65 73 20 63 68 61 74 20 6d 65 74 61 64 61 .buffer...This.saves.chat.metada
11c60 74 61 20 77 68 65 6e 20 77 72 69 74 69 6e 67 20 74 68 65 20 62 75 66 66 65 72 20 74 6f 20 64 69 ta.when.writing.the.buffer.to.di
11c80 73 6b 2e 20 20 54 6f 0a 72 65 73 74 6f 72 65 20 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 2c 20 sk...To.restore.a.chat.session,.
11ca0 74 75 72 6e 20 6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 61 66 74 65 72 20 6f 70 65 6e 69 turn.on.`gptel-mode'.after.openi
11cc0 6e 67 20 74 68 65 0a 66 69 6c 65 2e 22 0a 20 20 28 70 63 61 73 65 20 6d 61 6a 6f 72 2d 6d 6f 64 ng.the.file."...(pcase.major-mod
11ce0 65 0a 20 20 20 20 28 27 6f 72 67 2d 6d 6f 64 65 0a 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 e.....('org-mode......(require.'
11d00 67 70 74 65 6c 2d 6f 72 67 29 0a 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 61 76 65 gptel-org)......(gptel-org--save
11d20 2d 73 74 61 74 65 29 29 0a 20 20 20 20 28 5f 20 28 6c 65 74 20 28 28 70 72 69 6e 74 2d 65 73 63 -state)).....(_.(let.((print-esc
11d40 61 70 65 2d 6e 65 77 6c 69 6e 65 73 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d ape-newlines.t))..........(save-
11d60 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 72 65 73 74 72 excursion............(save-restr
11d80 69 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f iction..............(add-file-lo
11da0 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 67 70 74 65 6c 2d cal-variable.'gptel-model.gptel-
11dc0 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f model)..............(add-file-lo
11de0 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d cal-variable.'gptel--backend-nam
11e00 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e...............................
11e20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 ........(gptel-backend-name.gpte
11e40 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 l-backend))..............(unless
11e60 20 28 65 71 75 61 6c 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 74 65 .(equal.(default-value.'gptel-te
11e80 6d 70 65 72 61 74 75 72 65 29 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 0a 20 20 mperature).gptel-temperature)...
11ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 .............(add-file-local-var
11ec0 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 iable.'gptel-temperature.gptel-t
11ee0 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 emperature))..............(unles
11f00 73 20 28 73 74 72 69 6e 67 3d 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c s.(string=.(default-value.'gptel
11f20 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --system-message)...............
11f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 ................gptel--system-me
11f60 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d ssage)................(add-file-
11f80 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 local-variable.'gptel--system-me
11fa0 73 73 61 67 65 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 ssage.gptel--system-message))...
11fc0 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e ...........(when.gptel-max-token
11fe0 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 2d 66 69 6c 65 2d 6c 6f 63 61 6c s................(add-file-local
12000 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 67 70 74 65 -variable.'gptel-max-tokens.gpte
12020 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 64 64 l-max-tokens))..............(add
12040 2d 66 69 6c 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 62 6f 75 -file-local-variable.'gptel--bou
12060 6e 64 73 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 29 29 29 nds.(gptel--get-buffer-bounds)))
12080 29 29 29 29 29 0a 0a 0c 0a 3b 3b 20 4d 69 6e 6f 72 20 6d 6f 64 65 20 61 6e 64 20 55 49 0a 0a 3b )))))....;;.Minor.mode.and.UI..;
120a0 3b 20 4e 4f 54 45 3a 20 49 74 27 73 20 6e 6f 74 20 63 6c 65 61 72 20 74 68 61 74 20 74 68 69 73 ;.NOTE:.It's.not.clear.that.this
120c0 20 69 73 20 74 68 65 20 62 65 73 74 20 73 74 72 61 74 65 67 79 3a 0a 28 61 64 64 2d 74 6f 2d 6c .is.the.best.strategy:.(add-to-l
120e0 69 73 74 20 27 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 64 65 66 61 75 6c 74 2d 6e 6f 6e 73 74 ist.'text-property-default-nonst
12100 69 63 6b 79 20 27 28 67 70 74 65 6c 20 2e 20 74 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f icky.'(gptel...t))..;;;###autolo
12120 61 64 0a 28 64 65 66 69 6e 65 2d 6d 69 6e 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 6d 6f 64 65 ad.(define-minor-mode.gptel-mode
12140 0a 20 20 22 4d 69 6e 6f 72 20 6d 6f 64 65 20 66 6f 72 20 69 6e 74 65 72 61 63 74 69 6e 67 20 77 ..."Minor.mode.for.interacting.w
12160 69 74 68 20 4c 4c 4d 73 2e 22 0a 20 20 3a 6c 69 67 68 74 65 72 20 22 20 47 50 54 22 0a 20 20 3a ith.LLMs."...:lighter.".GPT"...:
12180 6b 65 79 6d 61 70 0a 20 20 28 6c 65 74 20 28 28 6d 61 70 20 28 6d 61 6b 65 2d 73 70 61 72 73 65 keymap...(let.((map.(make-sparse
121a0 2d 6b 65 79 6d 61 70 29 29 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 6d 61 70 20 28 -keymap))).....(define-key.map.(
121c0 6b 62 64 20 22 43 2d 63 20 52 45 54 22 29 20 23 27 67 70 74 65 6c 2d 73 65 6e 64 29 0a 20 20 20 kbd."C-c.RET").#'gptel-send)....
121e0 20 6d 61 70 29 0a 20 20 28 69 66 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 28 70 72 .map)...(if.gptel-mode.......(pr
12200 6f 67 6e 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6d 65 6d 71 20 6d 61 6a 6f 72 2d ogn.........(unless.(memq.major-
12220 6d 6f 64 65 20 27 28 6f 72 67 2d 6d 6f 64 65 20 6d 61 72 6b 64 6f 77 6e 2d 6d 6f 64 65 20 74 65 mode.'(org-mode.markdown-mode.te
12240 78 74 2d 6d 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6d 6f 64 65 20 xt-mode))...........(gptel-mode.
12260 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 28 66 6f 72 6d 61 -1)...........(user-error.(forma
12280 74 20 22 60 67 70 74 65 6c 2d 6d 6f 64 65 27 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 t."`gptel-mode'.is.not.supported
122a0 20 69 6e 20 60 25 73 27 2e 22 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 .in.`%s'.".major-mode)))........
122c0 20 28 61 64 64 2d 68 6f 6f 6b 20 27 62 65 66 6f 72 65 2d 73 61 76 65 2d 68 6f 6f 6b 20 23 27 67 .(add-hook.'before-save-hook.#'g
122e0 70 74 65 6c 2d 2d 73 61 76 65 2d 73 74 61 74 65 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 ptel--save-state.nil.t).........
12300 28 67 70 74 65 6c 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 29 0a 20 20 20 20 20 20 20 20 28 (gptel--restore-state).........(
12320 69 66 20 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 if.gptel-use-header-line........
12340 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 20 ...(setq.gptel--old-header-line.
12360 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 header-line-format..............
12380 20 20 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 ...header-line-format...........
123a0 20 20 20 20 20 20 28 6c 69 73 74 20 27 28 3a 65 76 61 6c 20 28 63 6f 6e 63 61 74 20 28 70 72 6f ......(list.'(:eval.(concat.(pro
123c0 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 27 28 73 70 61 63 65 20 3a 61 6c pertize.".".'display.'(space.:al
123e0 69 67 6e 2d 74 6f 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ign-to.0))......................
12400 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 28 67 70 74 65 6c 2d 62 61 ..........(format."%s".(gptel-ba
12420 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 0a 20 20 20 ckend-name.gptel-backend))))....
12440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 ...................(propertize."
12460 20 52 65 61 64 79 22 20 27 66 61 63 65 20 27 73 75 63 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 .Ready".'face.'success).........
12480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 65 76 61 6c 0a 20 20 20 20 20 20 20 20 20 20 ..............'(:eval...........
124a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 73 79 73 74 65 6d 0a 20 20 20 20 ..............(let.((system.....
124c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d ...........................(form
124e0 61 74 20 22 5b 50 72 6f 6d 70 74 3a 20 25 73 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 at."[Prompt:.%s]"...............
12500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 63 61 72 2d 73 61 66 65 20 ..................(or.(car-safe.
12520 28 72 61 73 73 6f 63 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 67 70 (rassoc.gptel--system-message.gp
12540 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-directives))................
12560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 ..................(truncate-stri
12580 6e 67 2d 74 6f 2d 77 69 64 74 68 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 ng-to-width.gptel--system-messag
125a0 65 20 31 35 20 6e 69 6c 20 6e 69 6c 20 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 e.15.nil.nil.t))))).............
125c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 .............(concat............
125e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 ...............(propertize......
12600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 22 20 27 64 69 73 70 6c ......................".".'displ
12620 61 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 ay............................`(
12640 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 28 2d 20 72 69 67 68 74 20 2c 28 2b 20 32 20 28 space.:align-to.(-.right.,(+.2.(
12660 6c 65 6e 67 74 68 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 20 28 6c 65 6e 67 74 68 20 73 79 73 74 length.gptel-model).(length.syst
12680 65 6d 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 em))))).........................
126a0 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(propertize...................
126c0 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 73 79 73 74 65 6d 0a 20 20 20 20 20 .........(buttonize.system......
126e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 .......................(lambda.(
12700 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 29 29 &rest._).(gptel-system-prompt)))
12720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f 75 ............................'mou
12740 73 65 2d 66 61 63 65 20 27 68 69 67 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 se-face.'highlight..............
12760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 68 65 6c 70 2d 65 63 68 6f 0a 20 20 20 20 20 20 20 ..............'help-echo........
12780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 79 73 74 65 6d 20 6d 65 73 73 ...................."System.mess
127a0 61 67 65 20 66 6f 72 20 62 75 66 66 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 age.for.buffer")................
127c0 20 20 20 20 20 20 20 20 20 20 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........."."..................
127e0 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 .........(propertize............
12800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 28 63 6f 6e 63 ................(buttonize.(conc
12820 61 74 20 22 5b 22 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 22 5d 22 29 0a 20 20 20 20 20 20 20 20 at."[".gptel-model."]").........
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 ....................(lambda.(&re
12860 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 st._).(gptel-menu)))............
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6d 6f 75 73 65 2d 66 61 63 65 20 27 68 69 67 ................'mouse-face.'hig
128a0 68 6c 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 hlight..........................
128c0 20 20 27 68 65 6c 70 2d 65 63 68 6f 20 22 47 50 54 20 6d 6f 64 65 6c 20 69 6e 20 75 73 65 22 29 ..'help-echo."GPT.model.in.use")
128e0 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d )))))...........(setq.mode-line-
12900 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 65 76 61 6c 20 process.................'(:eval.
12920 28 63 6f 6e 63 61 74 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (concat.".".....................
12940 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 .....(buttonize.gptel-model.....
12960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 ........................(lambda.
12980 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 29 29 29 29 0a 20 20 (&rest._).(gptel-menu))))))))...
129a0 20 20 28 69 66 20 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 2d 6c 69 6e 65 0a 20 20 20 20 ..(if.gptel-use-header-line.....
129c0 20 20 20 20 28 73 65 74 71 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 20 67 70 74 ....(setq.header-line-format.gpt
129e0 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 el--old-header-line.............
12a00 20 20 67 70 74 65 6c 2d 2d 6f 6c 64 2d 68 65 61 64 65 72 2d 6c 69 6e 65 20 6e 69 6c 29 0a 20 20 ..gptel--old-header-line.nil)...
12a20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 20 6e 69 6c 29 ....(setq.mode-line-process.nil)
12a40 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 )))..(defun.gptel--update-status
12a60 20 28 26 6f 70 74 69 6f 6e 61 6c 20 6d 73 67 20 66 61 63 65 29 0a 20 20 22 55 70 64 61 74 65 20 .(&optional.msg.face)..."Update.
12a80 73 74 61 74 75 73 20 4d 53 47 20 69 6e 20 46 41 43 45 2e 22 0a 20 20 28 77 68 65 6e 20 67 70 74 status.MSG.in.FACE."...(when.gpt
12aa0 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 75 73 65 2d 68 65 61 64 65 72 el-mode.....(if.gptel-use-header
12ac0 2d 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 63 6f 6e 73 70 20 68 65 61 64 65 72 -line.........(and.(consp.header
12ae0 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 66 20 28 -line-format)............(setf.(
12b00 6e 74 68 20 31 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 6f 72 6d 61 74 29 0a 20 20 20 20 20 20 nth.1.header-line-format).......
12b20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 6d 73 67 20 27 66 61 63 65 ...........(propertize.msg.'face
12b40 20 66 61 63 65 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 6d 65 6d 62 65 72 20 6d 73 67 20 27 .face))).......(if.(member.msg.'
12b60 28 22 20 54 79 70 69 6e 67 2e 2e 2e 22 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 29 29 0a 20 20 (".Typing...".".Waiting..."))...
12b80 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 20 ........(setq.mode-line-process.
12ba0 28 70 72 6f 70 65 72 74 69 7a 65 20 6d 73 67 20 27 66 61 63 65 20 66 61 63 65 29 29 0a 20 20 20 (propertize.msg.'face.face))....
12bc0 20 20 20 20 20 28 73 65 74 71 20 6d 6f 64 65 2d 6c 69 6e 65 2d 70 72 6f 63 65 73 73 0a 20 20 20 .....(setq.mode-line-process....
12be0 20 20 20 20 20 20 20 20 20 20 20 27 28 3a 65 76 61 6c 20 28 63 6f 6e 63 61 74 20 22 20 22 0a 20 ...........'(:eval.(concat."."..
12c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 74 74 6f 6e 69 7a 65 ......................(buttonize
12c20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .gptel-model....................
12c40 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 20 28 67 70 74 65 .........(lambda.(&rest._).(gpte
12c60 6c 2d 6d 65 6e 75 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 70 l-menu)))))).........(message.(p
12c80 72 6f 70 65 72 74 69 7a 65 20 6d 73 67 20 27 66 61 63 65 20 66 61 63 65 29 29 29 29 0a 20 20 20 ropertize.msg.'face.face))))....
12ca0 20 28 66 6f 72 63 65 2d 6d 6f 64 65 2d 6c 69 6e 65 2d 75 70 64 61 74 65 29 29 29 0a 0a 0c 0a 3b .(force-mode-line-update)))....;
12cc0 3b 20 53 65 6e 64 20 71 75 65 72 69 65 73 2c 20 68 61 6e 64 6c 65 20 72 65 73 70 6f 6e 73 65 73 ;.Send.queries,.handle.responses
12ce0 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 0a 20 20 20 20 28 26 6f .(cl-defun.gptel-request.....(&o
12d00 70 74 69 6f 6e 61 6c 20 70 72 6f 6d 70 74 20 26 6b 65 79 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 ptional.prompt.&key.callback....
12d20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 ............(buffer.(current-buf
12d40 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73 69 74 69 6f 6e 20 63 6f fer))................position.co
12d60 6e 74 65 78 74 20 64 72 79 2d 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 ntext.dry-run................(st
12d80 72 65 61 6d 20 6e 69 6c 29 20 28 69 6e 2d 70 6c 61 63 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 ream.nil).(in-place.nil)........
12da0 20 20 20 20 20 20 20 20 28 73 79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 ........(system.gptel--system-me
12dc0 73 73 61 67 65 29 29 0a 20 20 22 52 65 71 75 65 73 74 20 61 20 72 65 73 70 6f 6e 73 65 20 66 72 ssage))..."Request.a.response.fr
12de0 6f 6d 20 74 68 65 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 20 66 6f 72 20 50 52 4f 4d 50 om.the.`gptel-backend'.for.PROMP
12e00 54 2e 0a 0a 54 68 65 20 72 65 71 75 65 73 74 20 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c T...The.request.is.asynchronous,
12e20 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 72 65 74 75 72 6e .the.function.immediately.return
12e40 73 0a 77 69 74 68 20 74 68 65 20 64 61 74 61 20 74 68 61 74 20 77 61 73 20 73 65 6e 74 2e 0a 0a s.with.the.data.that.was.sent...
12e60 4e 6f 74 65 3a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 66 75 6c 6c 79 Note:.This.function.is.not.fully
12e80 20 73 65 6c 66 2d 63 6f 6e 74 61 69 6e 65 64 2e 20 20 43 6f 6e 73 69 64 65 72 0a 6c 65 74 2d 62 .self-contained...Consider.let-b
12ea0 69 6e 64 69 6e 67 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 60 67 70 74 65 6c 2d 62 61 63 inding.the.parameters.`gptel-bac
12ec0 6b 65 6e 64 27 20 61 6e 64 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 0a 61 72 6f 75 6e 64 20 63 kend'.and.`gptel-model'.around.c
12ee0 61 6c 6c 73 20 74 6f 20 69 74 20 61 73 20 72 65 71 75 69 72 65 64 2e 0a 0a 49 66 20 50 52 4f 4d alls.to.it.as.required...If.PROM
12f00 50 54 20 69 73 0a 2d 20 61 20 73 74 72 69 6e 67 2c 20 69 74 20 69 73 20 75 73 65 64 20 74 6f 20 PT.is.-.a.string,.it.is.used.to.
12f20 63 72 65 61 74 65 20 61 20 66 75 6c 6c 20 70 72 6f 6d 70 74 20 73 75 69 74 61 62 6c 65 20 66 6f create.a.full.prompt.suitable.fo
12f40 72 0a 20 20 73 65 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 0a 2d 20 6e 69 6c 20 62 75 r...sending.to.the.LLM..-.nil.bu
12f60 74 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2c 20 74 68 65 20 72 65 67 69 6f 6e 20 63 t.region.is.active,.the.region.c
12f80 6f 6e 74 65 6e 74 73 20 61 72 65 20 75 73 65 64 2e 0a 2d 20 6e 69 6c 2c 20 74 68 65 20 63 75 72 ontents.are.used..-.nil,.the.cur
12fa0 72 65 6e 74 20 62 75 66 66 65 72 27 73 20 63 6f 6e 74 65 6e 74 73 20 75 70 20 74 6f 20 28 70 6f rent.buffer's.contents.up.to.(po
12fc0 69 6e 74 29 20 61 72 65 20 75 73 65 64 2e 0a 20 20 50 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e int).are.used....Previous.respon
12fe0 73 65 73 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d 20 61 72 65 20 69 64 65 6e 74 69 66 69 65 64 20 ses.from.the.LLM.are.identified.
13000 61 73 20 72 65 73 70 6f 6e 73 65 73 2e 0a 2d 20 41 20 6c 69 73 74 20 6f 66 20 70 6c 69 73 74 73 as.responses..-.A.list.of.plists
13020 2c 20 69 74 20 69 73 20 75 73 65 64 20 61 73 20 69 73 2e 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 ,.it.is.used.as.is...Keyword.arg
13040 75 6d 65 6e 74 73 3a 0a 0a 43 41 4c 4c 42 41 43 4b 2c 20 69 66 20 73 75 70 70 6c 69 65 64 2c 20 uments:..CALLBACK,.if.supplied,.
13060 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2c 20 is.a.function.of.two.arguments,.
13080 63 61 6c 6c 65 64 0a 77 69 74 68 20 74 68 65 20 52 45 53 50 4f 4e 53 45 20 28 61 20 73 74 72 69 called.with.the.RESPONSE.(a.stri
130a0 6e 67 29 20 61 6e 64 20 49 4e 46 4f 20 28 61 20 70 6c 69 73 74 29 3a 0a 0a 20 28 63 61 6c 6c 62 ng).and.INFO.(a.plist):...(callb
130c0 61 63 6b 20 52 45 53 50 4f 4e 53 45 20 49 4e 46 4f 29 0a 0a 52 45 53 50 4f 4e 53 45 20 69 73 20 ack.RESPONSE.INFO)..RESPONSE.is.
130e0 6e 69 6c 20 69 66 20 74 68 65 72 65 20 77 61 73 20 6e 6f 20 72 65 73 70 6f 6e 73 65 20 6f 72 20 nil.if.there.was.no.response.or.
13100 61 6e 20 65 72 72 6f 72 2e 0a 0a 54 68 65 20 49 4e 46 4f 20 70 6c 69 73 74 20 68 61 73 20 28 61 an.error...The.INFO.plist.has.(a
13120 74 20 6c 65 61 73 74 29 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 73 3a 0a 3a 64 61 t.least).the.following.keys:.:da
13140 74 61 20 20 20 20 20 20 20 20 20 2d 20 54 68 65 20 72 65 71 75 65 73 74 20 64 61 74 61 20 69 6e ta.........-.The.request.data.in
13160 63 6c 75 64 65 64 20 77 69 74 68 20 74 68 65 20 71 75 65 72 79 0a 3a 70 6f 73 69 74 69 6f 6e 20 cluded.with.the.query.:position.
13180 20 20 20 20 2d 20 6d 61 72 6b 65 72 20 61 74 20 74 68 65 20 70 6f 69 6e 74 20 74 68 65 20 72 65 ....-.marker.at.the.point.the.re
131a0 71 75 65 73 74 20 77 61 73 20 73 65 6e 74 2c 20 75 6e 6c 65 73 73 0a 20 20 20 20 20 20 20 20 20 quest.was.sent,.unless..........
131c0 20 20 20 20 20 20 20 50 4f 53 49 54 49 4f 4e 20 69 73 20 73 70 65 63 69 66 69 65 64 2e 0a 3a 62 .......POSITION.is.specified..:b
131e0 75 66 66 65 72 20 20 20 20 20 20 20 2d 20 54 68 65 20 62 75 66 66 65 72 20 63 75 72 72 65 6e 74 uffer.......-.The.buffer.current
13200 20 77 68 65 6e 20 74 68 65 20 72 65 71 75 65 73 74 20 77 61 73 20 73 65 6e 74 2c 0a 20 20 20 20 .when.the.request.was.sent,.....
13220 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 42 55 46 46 45 52 20 69 73 20 73 70 65 ............unless.BUFFER.is.spe
13240 63 69 66 69 65 64 2e 0a 3a 73 74 61 74 75 73 20 20 20 20 20 20 20 2d 20 53 68 6f 72 74 20 73 74 cified..:status.......-.Short.st
13260 72 69 6e 67 20 64 65 73 63 72 69 62 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 ring.describing.the.result.of.th
13280 65 20 72 65 71 75 65 73 74 0a 0a 45 78 61 6d 70 6c 65 20 6f 66 20 61 20 63 61 6c 6c 62 61 63 6b e.request..Example.of.a.callback
132a0 20 74 68 61 74 20 6d 65 73 73 61 67 65 73 20 74 68 65 20 75 73 65 72 20 77 69 74 68 20 74 68 65 .that.messages.the.user.with.the
132c0 20 72 65 73 70 6f 6e 73 65 0a 61 6e 64 20 69 6e 66 6f 3a 0a 0a 20 28 6c 61 6d 62 64 61 20 28 72 .response.and.info:...(lambda.(r
132e0 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 28 69 66 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 esponse.info)...(if.response....
13300 20 20 20 28 6c 65 74 20 28 28 70 6f 73 6e 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 ...(let.((posn.(marker-position.
13320 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 29 0a 20 20 20 (plist-get.info.:position)))....
13340 20 20 20 20 20 20 20 20 20 28 62 75 66 20 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 70 6c 69 .........(buf..(buffer-name.(pli
13360 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 st-get.info.:buffer)))).........
13380 28 6d 65 73 73 61 67 65 20 5c 22 52 65 73 70 6f 6e 73 65 20 66 6f 72 20 72 65 71 75 65 73 74 20 (message.\"Response.for.request.
133a0 66 72 6f 6d 20 25 53 20 61 74 20 25 64 3a 20 25 73 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 from.%S.at.%d:.%s\".............
133c0 20 20 20 20 20 62 75 66 20 70 6f 73 6e 20 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 28 6d 65 .....buf.posn.response)).....(me
133e0 73 73 61 67 65 20 5c 22 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 66 61 69 6c 65 64 20 77 69 74 ssage.\"gptel-request.failed.wit
13400 68 20 6d 65 73 73 61 67 65 3a 20 25 73 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c h.message:.%s\"..............(pl
13420 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 29 29 0a 0a 4f 72 2c 20 66 6f ist-get.info.:status))))..Or,.fo
13440 72 20 6a 75 73 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 3a 0a 0a 20 28 6c 61 6d 62 64 61 20 28 r.just.the.response:...(lambda.(
13460 72 65 73 70 6f 6e 73 65 20 5f 29 0a 20 20 3b 3b 20 44 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 response._)...;;.Do.something.wi
13480 74 68 20 72 65 73 70 6f 6e 73 65 0a 20 20 28 6d 65 73 73 61 67 65 20 28 72 6f 74 31 33 2d 73 74 th.response...(message.(rot13-st
134a0 72 69 6e 67 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 0a 49 66 20 43 41 4c 4c 42 41 43 4b 20 69 73 ring.response)))..If.CALLBACK.is
134c0 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 .omitted,.the.response.is.insert
134e0 65 64 20 61 74 20 74 68 65 20 70 6f 69 6e 74 20 74 68 65 0a 72 65 71 75 65 73 74 20 77 61 73 20 ed.at.the.point.the.request.was.
13500 73 65 6e 74 2e 0a 0a 42 55 46 46 45 52 20 61 6e 64 20 50 4f 53 49 54 49 4f 4e 20 61 72 65 20 74 sent...BUFFER.and.POSITION.are.t
13520 68 65 20 62 75 66 66 65 72 20 61 6e 64 20 70 6f 73 69 74 69 6f 6e 20 28 69 6e 74 65 67 65 72 20 he.buffer.and.position.(integer.
13540 6f 72 0a 6d 61 72 6b 65 72 29 20 61 74 20 77 68 69 63 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 or.marker).at.which.the.response
13560 20 69 73 20 69 6e 73 65 72 74 65 64 2e 20 20 49 66 20 61 20 43 41 4c 4c 42 41 43 4b 20 69 73 0a .is.inserted...If.a.CALLBACK.is.
13580 73 70 65 63 69 66 69 65 64 2c 20 6e 6f 20 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 specified,.no.response.is.insert
135a0 65 64 20 61 6e 64 20 74 68 65 73 65 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 0a 69 67 6e 6f 72 ed.and.these.arguments.are.ignor
135c0 65 64 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 73 74 69 6c 6c 20 61 76 61 69 6c 61 62 6c 65 ed,.but.they.are.still.available
135e0 20 69 6e 20 74 68 65 20 49 4e 46 4f 20 70 6c 69 73 74 20 70 61 73 73 65 64 0a 74 6f 20 43 41 4c .in.the.INFO.plist.passed.to.CAL
13600 4c 42 41 43 4b 20 66 6f 72 20 79 6f 75 20 74 6f 20 75 73 65 2e 0a 0a 42 55 46 46 45 52 20 64 65 LBACK.for.you.to.use...BUFFER.de
13620 66 61 75 6c 74 73 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2c 20 61 6e faults.to.the.current.buffer,.an
13640 64 20 50 4f 53 49 54 49 4f 4e 20 74 6f 20 74 68 65 20 76 61 6c 75 65 0a 6f 66 20 28 70 6f 69 6e d.POSITION.to.the.value.of.(poin
13660 74 29 20 6f 72 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e t).or.(region-end),.depending.on
13680 20 77 68 65 74 68 65 72 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 0a 61 63 74 69 76 65 2e 0a 0a .whether.the.region.is.active...
136a0 43 4f 4e 54 45 58 54 20 69 73 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 61 20 6e CONTEXT.is.any.additional.data.n
136c0 65 65 64 65 64 20 66 6f 72 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 74 6f 20 72 75 6e 2e 20 49 eeded.for.the.callback.to.run..I
136e0 74 0a 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 49 4e 46 4f 20 61 72 67 75 6d 65 t.is.included.in.the.INFO.argume
13700 6e 74 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 0a 53 59 53 54 45 4d 20 69 73 20 74 nt.to.the.callback...SYSTEM.is.t
13720 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 28 63 68 61 74 20 64 69 72 65 63 74 69 76 he.system.message.(chat.directiv
13740 65 29 20 73 65 6e 74 20 74 6f 20 74 68 65 20 4c 4c 4d 2e 20 49 66 0a 6f 6d 69 74 74 65 64 2c 20 e).sent.to.the.LLM..If.omitted,.
13760 74 68 65 20 76 61 6c 75 65 20 6f 66 20 60 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 the.value.of.`gptel--system-mess
13780 61 67 65 27 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 0a 62 75 66 66 65 72 20 69 73 20 75 age'.for.the.current.buffer.is.u
137a0 73 65 64 2e 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 77 6f 72 64 73 20 61 72 65 sed...The.following.keywords.are
137c0 20 6d 61 69 6e 6c 79 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 3a 0a 0a 49 4e 2d 50 4c .mainly.for.internal.use:..IN-PL
137e0 41 43 45 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 75 73 65 64 20 62 79 20 74 68 65 20 64 65 66 ACE.is.a.boolean.used.by.the.def
13800 61 75 6c 74 20 63 61 6c 6c 62 61 63 6b 20 77 68 65 6e 20 69 6e 73 65 72 74 69 6e 67 0a 74 68 65 ault.callback.when.inserting.the
13820 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 64 65 6c 69 6d 69 .response.to.determine.if.delimi
13840 74 65 72 73 20 61 72 65 20 6e 65 65 64 65 64 20 62 65 74 77 65 65 6e 20 74 68 65 0a 70 72 6f 6d ters.are.needed.between.the.prom
13860 70 74 20 61 6e 64 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 pt.and.the.response...STREAM.is.
13880 61 20 62 6f 6f 6c 65 61 6e 20 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 a.boolean.that.determines.if.the
138a0 20 72 65 73 70 6f 6e 73 65 20 73 68 6f 75 6c 64 20 62 65 0a 73 74 72 65 61 6d 65 64 2c 20 61 73 .response.should.be.streamed,.as
138c0 20 69 6e 20 60 67 70 74 65 6c 2d 73 74 72 65 61 6d 27 2e 20 44 6f 20 6e 6f 74 20 73 65 74 20 74 .in.`gptel-stream'..Do.not.set.t
138e0 68 69 73 20 69 66 20 79 6f 75 20 61 72 65 0a 73 70 65 63 69 66 79 69 6e 67 20 61 20 63 75 73 74 his.if.you.are.specifying.a.cust
13900 6f 6d 20 43 41 4c 4c 42 41 43 4b 21 0a 0a 49 66 20 44 52 59 2d 52 55 4e 20 69 73 20 6e 6f 6e 2d om.CALLBACK!..If.DRY-RUN.is.non-
13920 6e 69 6c 2c 20 63 6f 6e 73 74 72 75 63 74 20 61 6e 64 20 72 65 74 75 72 6e 20 74 68 65 20 66 75 nil,.construct.and.return.the.fu
13940 6c 6c 0a 71 75 65 72 79 20 64 61 74 61 20 61 73 20 75 73 75 61 6c 2c 20 62 75 74 20 64 6f 20 6e ll.query.data.as.usual,.but.do.n
13960 6f 74 20 73 65 6e 64 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 4d 6f 64 65 6c 20 70 61 72 61 ot.send.the.request...Model.para
13980 6d 65 74 65 72 73 20 63 61 6e 20 62 65 20 6c 65 74 2d 62 6f 75 6e 64 20 61 72 6f 75 6e 64 20 63 meters.can.be.let-bound.around.c
139a0 61 6c 6c 73 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 22 0a 20 20 28 64 65 63 6c 61 alls.to.this.function."...(decla
139c0 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 67 70 74 65 6c 2d 2d re.(indent.1))...(let*.((gptel--
139e0 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 system-message.system)..........
13a00 28 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 28 (gptel-stream.stream)..........(
13a20 73 74 61 72 74 2d 6d 61 72 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 start-marker...........(cond....
13a40 20 20 20 20 20 20 20 20 28 28 6e 75 6c 6c 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 ........((null.position)........
13a60 20 20 20 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 .....(if.(use-region-p).........
13a80 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 ........(set-marker.(make-marker
13aa0 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 ).(region-end))...............(g
13ac0 70 74 65 6c 2d 2d 61 74 2d 77 6f 72 64 2d 65 6e 64 20 28 70 6f 69 6e 74 2d 6d 61 72 6b 65 72 29 ptel--at-word-end.(point-marker)
13ae0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6d 61 72 6b 65 72 70 20 70 6f 73 69 74 69 6f )))............((markerp.positio
13b00 6e 29 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 69 6e 74 65 67 65 n).position)............((intege
13b20 72 70 20 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 rp.position).............(set-ma
13b40 72 6b 65 72 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 20 70 6f 73 69 74 69 6f 6e 20 62 75 66 66 rker.(make-marker).position.buff
13b60 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 75 6c 6c 2d 70 72 6f 6d 70 74 0a 20 20 20 er))))..........(full-prompt....
13b80 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 6e 75 6c 6c 20 70 .......(cond............((null.p
13ba0 72 6f 6d 70 74 29 20 28 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 73 74 61 rompt).(gptel--create-prompt.sta
13bc0 72 74 2d 6d 61 72 6b 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 rt-marker))............((stringp
13be0 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 20 44 65 .prompt).............;;.FIXME.De
13c00 61 72 20 72 65 61 64 65 72 2c 20 77 65 6c 63 6f 6d 65 20 74 6f 20 4a 61 6e 6b 20 43 69 74 79 3a ar.reader,.welcome.to.Jank.City:
13c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 .............(with-temp-buffer..
13c40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 .............(let.((gptel-model.
13c60 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c (buffer-local-value.'gptel-model
13c80 20 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 .buffer)).....................(g
13ca0 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 ptel-backend.(buffer-local-value
13cc0 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 .'gptel-backend.buffer))).......
13ce0 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 ..........(insert.prompt).......
13d00 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 29 ..........(gptel--create-prompt)
13d20 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 63 6f 6e 73 70 20 70 72 6f 6d 70 74 29 20 70 )))............((consp.prompt).p
13d40 72 6f 6d 70 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 71 75 65 73 74 2d 64 61 74 61 20 rompt)))..........(request-data.
13d60 28 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 67 70 74 65 6c 2d 62 61 63 6b 65 (gptel--request-data.gptel-backe
13d80 6e 64 20 66 75 6c 6c 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 6e 66 6f 20 nd.full-prompt))..........(info.
13da0 28 6c 69 73 74 20 3a 64 61 74 61 20 72 65 71 75 65 73 74 2d 64 61 74 61 0a 20 20 20 20 20 20 20 (list.:data.request-data........
13dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 ..............:buffer.buffer....
13de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 ..................:position.star
13e00 74 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 63 6f 6e 74 65 78 74 20 28 70 t-marker))).....(when.context.(p
13e20 6c 69 73 74 2d 70 75 74 20 69 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 29 29 list-put.info.:context.context))
13e40 0a 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c 61 63 65 20 28 70 6c 69 73 74 2d 70 75 74 20 69 .....(when.in-place.(plist-put.i
13e60 6e 66 6f 20 3a 69 6e 2d 70 6c 61 63 65 20 69 6e 2d 70 6c 61 63 65 29 29 0a 20 20 20 20 28 75 6e nfo.:in-place.in-place)).....(un
13e80 6c 65 73 73 20 64 72 79 2d 72 75 6e 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 69 66 20 less.dry-run.......(funcall.(if.
13ea0 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-use-curl..................
13ec0 20 20 23 27 67 70 74 65 6c 2d 63 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 20 23 27 67 70 ..#'gptel-curl-get-response.#'gp
13ee0 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 tel--url-get-response)..........
13f00 20 20 20 20 20 20 69 6e 66 6f 20 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20 72 65 71 75 65 73 ......info.callback)).....reques
13f20 74 2d 64 61 74 61 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 48 61 6e 64 6c 65 20 6d 75 6c 74 69 70 t-data))..;;.TODO:.Handle.multip
13f40 6c 65 20 72 65 71 75 65 73 74 73 28 23 31 35 29 2e 20 28 4f 6e 6c 79 20 6f 6e 65 20 72 65 71 75 le.requests(#15)..(Only.one.requ
13f60 65 73 74 20 66 72 6f 6d 20 6f 6e 65 20 62 75 66 66 65 72 20 61 74 20 61 20 74 69 6d 65 3f 29 0a est.from.one.buffer.at.a.time?).
13f80 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 73 65 6e 64 ;;;###autoload.(defun.gptel-send
13fa0 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 67 29 0a 20 20 22 53 75 62 6d 69 74 20 74 68 69 73 20 .(&optional.arg)..."Submit.this.
13fc0 70 72 6f 6d 70 74 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 4c 4c 4d 20 62 61 63 6b 65 6e prompt.to.the.current.LLM.backen
13fe0 64 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 d...By.default,.the.contents.of.
14000 74 68 65 20 62 75 66 66 65 72 20 75 70 20 74 6f 20 74 68 65 20 63 75 72 73 6f 72 20 70 6f 73 69 the.buffer.up.to.the.cursor.posi
14020 74 69 6f 6e 0a 61 72 65 20 73 65 6e 74 2e 20 20 49 66 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 tion.are.sent...If.the.region.is
14040 20 61 63 74 69 76 65 2c 20 69 74 73 20 63 6f 6e 74 65 6e 74 73 20 61 72 65 20 73 65 6e 74 0a 69 .active,.its.contents.are.sent.i
14060 6e 73 74 65 61 64 2e 0a 0a 54 68 65 20 72 65 73 70 6f 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 4c nstead...The.response.from.the.L
14080 4c 4d 20 69 73 20 69 6e 73 65 72 74 65 64 20 62 65 6c 6f 77 20 74 68 65 20 63 75 72 73 6f 72 20 LM.is.inserted.below.the.cursor.
140a0 70 6f 73 69 74 69 6f 6e 0a 61 74 20 74 68 65 20 74 69 6d 65 20 6f 66 20 73 65 6e 64 69 6e 67 2e position.at.the.time.of.sending.
140c0 20 20 54 6f 20 63 68 61 6e 67 65 20 74 68 69 73 20 62 65 68 61 76 69 6f 72 20 6f 72 20 6d 6f 64 ..To.change.this.behavior.or.mod
140e0 65 6c 0a 70 61 72 61 6d 65 74 65 72 73 2c 20 75 73 65 20 70 72 65 66 69 78 20 61 72 67 20 41 52 el.parameters,.use.prefix.arg.AR
14100 47 20 61 63 74 69 76 61 74 65 20 61 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 77 69 74 68 G.activate.a.transient.menu.with
14120 0a 6d 6f 72 65 20 6f 70 74 69 6f 6e 73 20 69 6e 73 74 65 61 64 2e 0a 0a 54 68 69 73 20 63 6f 6d .more.options.instead...This.com
14140 6d 61 6e 64 20 69 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 2c 20 79 6f 75 20 63 61 6e 20 63 6f mand.is.asynchronous,.you.can.co
14160 6e 74 69 6e 75 65 20 74 6f 20 75 73 65 20 45 6d 61 63 73 20 77 68 69 6c 65 0a 77 61 69 74 69 6e ntinue.to.use.Emacs.while.waitin
14180 67 20 66 6f 72 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 g.for.the.response."...(interact
141a0 69 76 65 20 22 50 22 29 0a 20 20 28 69 66 20 28 61 6e 64 20 61 72 67 20 28 72 65 71 75 69 72 65 ive."P")...(if.(and.arg.(require
141c0 20 27 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 .'gptel-transient.nil.t)).......
141e0 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 6d 65 6e 75 (call-interactively.#'gptel-menu
14200 29 0a 20 20 28 6d 65 73 73 61 67 65 20 22 51 75 65 72 79 69 6e 67 20 25 73 2e 2e 2e 22 20 28 67 )...(message."Querying.%s...".(g
14220 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 ptel-backend-name.gptel-backend)
14240 29 0a 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 28 67 )...(gptel--sanitize-model)...(g
14260 70 74 65 6c 2d 72 65 71 75 65 73 74 20 6e 69 6c 20 3a 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 ptel-request.nil.:stream.gptel-s
14280 74 72 65 61 6d 29 0a 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 tream)...(gptel--update-status."
142a0 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e 69 6e 67 29 29 29 0a 0a 28 64 65 63 6c 61 .Waiting...".'warning)))..(decla
142c0 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e 74 2d 62 75 re-function.json-pretty-print-bu
142e0 66 66 65 72 20 22 6a 73 6f 6e 22 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 70 65 ffer."json").(defun.gptel--inspe
14300 63 74 2d 71 75 65 72 79 20 28 72 65 71 75 65 73 74 2d 64 61 74 61 20 26 6f 70 74 69 6f 6e 61 6c ct-query.(request-data.&optional
14320 20 61 72 67 29 0a 20 20 22 53 68 6f 77 20 52 45 51 55 45 53 54 2d 44 41 54 41 2c 20 74 68 65 20 .arg)..."Show.REQUEST-DATA,.the.
14340 66 75 6c 6c 20 4c 4c 4d 20 71 75 65 72 79 20 74 6f 20 62 65 20 73 65 6e 74 2c 20 69 6e 20 61 20 full.LLM.query.to.be.sent,.in.a.
14360 62 75 66 66 65 72 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 73 20 61 73 20 61 20 64 72 79 buffer...This.functions.as.a.dry
14380 20 72 75 6e 20 6f 66 20 60 67 70 74 65 6c 2d 73 65 6e 64 27 2e 20 20 49 66 20 41 52 47 20 69 73 .run.of.`gptel-send'...If.ARG.is
143a0 0a 74 68 65 20 73 79 6d 62 6f 6c 20 6a 73 6f 6e 2c 20 73 68 6f 77 20 74 68 65 20 65 6e 63 6f 64 .the.symbol.json,.show.the.encod
143c0 65 64 20 4a 53 4f 4e 20 71 75 65 72 79 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6c 69 73 ed.JSON.query.instead.of.the.lis
143e0 70 0a 73 74 72 75 63 74 75 72 65 20 67 70 74 65 6c 20 75 73 65 73 2e 22 0a 20 20 28 77 69 74 68 p.structure.gptel.uses."...(with
14400 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 -current-buffer.(get-buffer-crea
14420 74 65 20 22 2a 67 70 74 65 6c 2d 71 75 65 72 79 2a 22 29 0a 20 20 20 20 28 6c 65 74 20 28 28 73 te."*gptel-query*").....(let.((s
14440 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 tandard-output.(current-buffer))
14460 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 ...........(inhibit-read-only.t)
14480 29 0a 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 64 69 73 61 62 6c 65 2d 75 6e 64 6f 29 0a 20 20 ).......(buffer-disable-undo)...
144a0 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 69 66 20 28 65 71 ....(erase-buffer).......(if.(eq
144c0 20 61 72 67 20 27 6a 73 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 66 75 .arg.'json)...........(progn.(fu
144e0 6e 64 61 6d 65 6e 74 61 6c 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndamental-mode).................
14500 20 28 69 6e 73 65 72 74 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 72 65 71 .(insert.(gptel--json-encode.req
14520 75 65 73 74 2d 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6a 73 uest-data))..................(js
14540 6f 6e 2d 70 72 65 74 74 79 2d 70 72 69 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 on-pretty-print-buffer))........
14560 20 28 6c 69 73 70 2d 64 61 74 61 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 28 70 72 69 6e 31 .(lisp-data-mode).........(prin1
14580 20 72 65 71 75 65 73 74 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 28 70 70 2d 62 75 66 66 65 .request-data).........(pp-buffe
145a0 72 29 29 0a 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 r)).......(goto-char.(point-min)
145c0 29 0a 20 20 20 20 20 20 28 76 69 65 77 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 20 20 28 64 69 73 ).......(view-mode.1).......(dis
145e0 70 6c 61 79 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 67 70 74 play-buffer.(current-buffer).gpt
14600 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f 6e 29 29 29 29 0a 0a 28 64 el-display-buffer-action))))..(d
14620 65 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 20 28 72 65 73 efun.gptel--insert-response.(res
14640 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 22 49 6e 73 65 72 74 20 74 68 65 20 4c 4c 4d 20 52 45 ponse.info)..."Insert.the.LLM.RE
14660 53 50 4f 4e 53 45 20 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 2e 0a 0a 49 SPONSE.into.the.gptel.buffer...I
14680 4e 46 4f 20 69 73 20 61 20 70 6c 69 73 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 66 6f 72 6d NFO.is.a.plist.containing.inform
146a0 61 74 69 6f 6e 20 72 65 6c 65 76 61 6e 74 20 74 6f 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 53 ation.relevant.to.this.buffer..S
146c0 65 65 20 60 67 70 74 65 6c 2d 2d 75 72 6c 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 ee.`gptel--url-get-response'.for
146e0 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 73 74 61 74 75 73 2d 73 74 72 20 .details."...(let*.((status-str.
14700 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 29 29 0a 20 20 20 20 20 .(plist-get.info.:status))......
14720 20 20 20 20 28 67 70 74 65 6c 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 ....(gptel-buffer.(plist-get.inf
14740 6f 20 3a 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 6d 61 72 6b o.:buffer))..........(start-mark
14760 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 70 6f 73 69 74 69 6f 6e 29 29 0a 20 er.(plist-get.info.:position))..
14780 20 20 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 2d 62 65 67 20 72 65 73 70 6f 6e 73 65 2d 65 6e ........response-beg.response-en
147a0 64 29 0a 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 72 65 61 64 2d 6f 6e 6c 79 20 62 75 66 66 65 d).....;;.Handle.read-only.buffe
147c0 72 73 0a 20 20 20 20 28 77 68 65 6e 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 rs.....(when.(with-current-buffe
147e0 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 62 r.gptel-buffer.............(or.b
14800 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uffer-read-only.................
14820 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 (get-char-property.start-marker.
14840 27 72 65 61 64 2d 6f 6e 6c 79 29 29 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 42 75 'read-only))).......(message."Bu
14860 66 66 65 72 20 69 73 20 72 65 61 64 20 6f 6e 6c 79 2c 20 64 69 73 70 6c 61 79 69 6e 67 20 72 65 ffer.is.read.only,.displaying.re
14880 70 6c 79 20 69 6e 20 62 75 66 66 65 72 20 5c 22 2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a 5c 22 ply.in.buffer.\"*LLM.response*\"
148a0 22 29 0a 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 ").......(display-buffer........
148c0 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 (with-current-buffer.(get-buffer
148e0 2d 63 72 65 61 74 65 20 22 2a 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 2a 22 29 0a 20 20 20 20 20 20 -create."*LLM.response*").......
14900 20 20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 20 31 29 0a 20 20 20 20 20 20 20 20 ...(visual-line-mode.1).........
14920 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 .(goto-char.(point-max))........
14940 20 20 28 6d 6f 76 65 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 20 28 70 6f 69 ..(move-marker.start-marker.(poi
14960 6e 74 29 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 nt).(current-buffer))..........(
14980 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 27 28 28 64 69 73 70 6c current-buffer))........'((displ
149a0 61 79 2d 62 75 66 66 65 72 2d 72 65 75 73 65 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 ay-buffer-reuse-window..........
149c0 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 70 6f 70 2d 75 70 2d 77 69 6e 64 6f 77 29 0a 20 .display-buffer-pop-up-window)..
149e0 20 20 20 20 20 20 20 20 28 72 65 75 73 61 62 6c 65 2d 66 72 61 6d 65 73 20 2e 20 76 69 73 69 62 ........(reusable-frames...visib
14a00 6c 65 29 29 29 29 0a 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 20 61 6e le)))).....;;.Insert.response.an
14a20 64 20 73 74 61 74 75 73 20 6d 65 73 73 61 67 65 2f 65 72 72 6f 72 20 6d 65 73 73 61 67 65 0a 20 d.status.message/error.message..
14a40 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 ...(with-current-buffer.gptel-bu
14a60 66 66 65 72 0a 20 20 20 20 20 20 28 69 66 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 ffer.......(if.response.........
14a80 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 70 6f ..(progn.............(setq.respo
14aa0 6e 73 65 20 28 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d 72 65 73 70 6f 6e 73 65 0a 20 nse.(gptel--transform-response..
14ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ..............................re
14ae0 73 70 6f 6e 73 65 20 67 70 74 65 6c 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 sponse.gptel-buffer))...........
14b00 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(save-excursion...............
14b20 28 70 75 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (put-text-property..............
14b40 20 20 30 20 28 6c 65 6e 67 74 68 20 72 65 73 70 6f 6e 73 65 29 20 27 67 70 74 65 6c 20 27 72 65 ..0.(length.response).'gptel.'re
14b60 73 70 6f 6e 73 65 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 sponse.response)...............(
14b80 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6d 61 72 6b 65 72 2d 62 75 66 66 with-current-buffer.(marker-buff
14ba0 65 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er.start-marker)................
14bc0 20 28 67 6f 74 6f 2d 63 68 61 72 20 73 74 61 72 74 2d 6d 61 72 6b 65 72 29 0a 20 20 20 20 20 20 .(goto-char.start-marker).......
14be0 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 73 20 27 67 70 74 65 6c 2d 70 72 65 2d ..........(run-hooks.'gptel-pre-
14c00 72 65 73 70 6f 6e 73 65 2d 68 6f 6f 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 response-hook).................(
14c20 75 6e 6c 65 73 73 20 28 6f 72 20 28 62 6f 62 70 29 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 unless.(or.(bobp).(plist-get.inf
14c40 6f 20 3a 69 6e 2d 70 6c 61 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o.:in-place))...................
14c60 28 69 6e 73 65 72 74 20 22 5c 6e 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (insert."\n\n").................
14c80 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(when.gptel-mode..............
14ca0 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 .......(insert.(gptel-response-p
14cc0 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 refix-string))))................
14ce0 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 2d 62 65 67 20 28 70 6f 69 6e 74 29 29 20 3b 53 61 .(setq.response-beg.(point)).;Sa
14d00 76 65 20 72 65 73 70 6f 6e 73 65 20 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 20 20 ve.response.start.position......
14d20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 ...........(insert.response)....
14d40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 70 6f 6e 73 65 2d 65 6e 64 20 .............(setq.response-end.
14d60 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 6c 73 65 2d (point)).................(pulse-
14d80 6d 6f 6d 65 6e 74 61 72 79 2d 68 69 67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 72 65 73 70 6f momentary-highlight-region.respo
14da0 6e 73 65 2d 62 65 67 20 72 65 73 70 6f 6e 73 65 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 nse-beg.response-end)...........
14dc0 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28 69 6e 73 65 72 74 20 22 ......(when.gptel-mode.(insert."
14de0 5c 6e 5c 6e 22 20 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e \n\n".(gptel-prompt-prefix-strin
14e00 67 29 29 29 29 20 3b 53 61 76 65 20 72 65 73 70 6f 6e 73 65 20 65 6e 64 20 70 6f 73 69 74 69 6f g)))).;Save.response.end.positio
14e20 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 n...............(when.gptel-mode
14e40 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 52 65 61 64 79 22 20 .(gptel--update-status.".Ready".
14e60 27 73 75 63 63 65 73 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 'success)))).........(gptel--upd
14e80 61 74 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 52 65 ate-status..........(format.".Re
14ea0 73 70 6f 6e 73 65 20 45 72 72 6f 72 3a 20 25 73 22 20 73 74 61 74 75 73 2d 73 74 72 29 20 27 65 sponse.Error:.%s".status-str).'e
14ec0 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 67 70 74 65 6c 20 72 65 rror).........(message."gptel.re
14ee0 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 sponse.error:.(%s).%s"..........
14f00 20 20 20 20 20 20 20 20 73 74 61 74 75 73 2d 73 74 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e ........status-str.(plist-get.in
14f20 66 6f 20 3a 65 72 72 6f 72 29 29 29 29 0a 20 20 20 20 3b 3b 20 52 75 6e 20 68 6f 6f 6b 20 69 6e fo.:error)))).....;;.Run.hook.in
14f40 20 76 69 73 69 62 6c 65 20 77 69 6e 64 6f 77 20 74 6f 20 73 65 74 20 77 69 6e 64 6f 77 2d 70 6f .visible.window.to.set.window-po
14f60 69 6e 74 2c 20 42 55 47 20 23 32 36 39 0a 20 20 20 20 28 69 66 2d 6c 65 74 20 28 28 67 70 74 65 int,.BUG.#269.....(if-let.((gpte
14f80 6c 2d 77 69 6e 64 6f 77 20 28 67 65 74 2d 62 75 66 66 65 72 2d 77 69 6e 64 6f 77 20 67 70 74 65 l-window.(get-buffer-window.gpte
14fa0 6c 2d 62 75 66 66 65 72 20 27 76 69 73 69 62 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 l-buffer.'visible))).........(wi
14fc0 74 68 2d 73 65 6c 65 63 74 65 64 2d 77 69 6e 64 6f 77 20 67 70 74 65 6c 2d 77 69 6e 64 6f 77 0a th-selected-window.gptel-window.
14fe0 20 20 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 2d 77 69 74 68 2d 61 72 67 73 20 27 67 ..........(run-hook-with-args.'g
15000 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 72 65 73 ptel-post-response-functions.res
15020 70 6f 6e 73 65 2d 62 65 67 20 72 65 73 70 6f 6e 73 65 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 28 ponse-beg.response-end)).......(
15040 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 with-current-buffer.gptel-buffer
15060 0a 20 20 20 20 20 20 20 20 28 72 75 6e 2d 68 6f 6f 6b 2d 77 69 74 68 2d 61 72 67 73 20 27 67 70 .........(run-hook-with-args.'gp
15080 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 72 65 73 70 tel-post-response-functions.resp
150a0 6f 6e 73 65 2d 62 65 67 20 72 65 73 70 6f 6e 73 65 2d 65 6e 64 29 29 29 29 29 0a 0a 28 64 65 66 onse-beg.response-end)))))..(def
150c0 75 6e 20 67 70 74 65 6c 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 28 26 6f 70 74 69 6f 6e un.gptel--create-prompt.(&option
150e0 61 6c 20 70 72 6f 6d 70 74 2d 65 6e 64 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 66 75 6c 6c 20 al.prompt-end)..."Return.a.full.
15100 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e conversation.prompt.from.the.con
15120 74 65 6e 74 73 20 6f 66 20 74 68 69 73 20 62 75 66 66 65 72 2e 0a 0a 49 66 20 60 67 70 74 65 6c tents.of.this.buffer...If.`gptel
15140 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 27 20 69 73 20 73 65 74 2c 20 --num-messages-to-send'.is.set,.
15160 6c 69 6d 69 74 20 74 6f 20 74 68 61 74 20 6d 61 6e 79 0a 72 65 63 65 6e 74 20 65 78 63 68 61 6e limit.to.that.many.recent.exchan
15180 67 65 73 2e 0a 0a 49 66 20 74 68 65 20 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 20 6c 69 ges...If.the.region.is.active.li
151a0 6d 69 74 20 74 68 65 20 70 72 6f 6d 70 74 20 74 6f 20 74 68 65 20 72 65 67 69 6f 6e 20 63 6f 6e mit.the.prompt.to.the.region.con
151c0 74 65 6e 74 73 0a 69 6e 73 74 65 61 64 2e 0a 0a 49 66 20 50 52 4f 4d 50 54 2d 45 4e 44 20 28 61 tents.instead...If.PROMPT-END.(a
151e0 20 6d 61 72 6b 65 72 29 20 69 73 20 70 72 6f 76 69 64 65 64 2c 20 65 6e 64 20 74 68 65 20 70 72 .marker).is.provided,.end.the.pr
15200 6f 6d 70 74 20 63 6f 6e 74 65 6e 74 73 0a 74 68 65 72 65 2e 22 0a 20 20 28 73 61 76 65 2d 65 78 ompt.contents.there."...(save-ex
15220 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 cursion.....(save-restriction...
15240 20 20 20 20 28 6c 65 74 20 28 28 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 61 6e 64 20 67 70 74 65 ....(let.((max-entries.(and.gpte
15260 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 l--num-messages-to-send.........
15280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2a 20 32 20 67 70 74 65 6c ......................(*.2.gptel
152a0 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 29 29 29 29 0a 20 20 20 20 20 --num-messages-to-send))))......
152c0 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 28 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 ...(cond..........((use-region-p
152e0 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 61 72 72 6f 77 20 74 6f 20 72 65 67 69 6f 6e 0a )...........;;.Narrow.to.region.
15300 20 20 20 20 20 20 20 20 20 20 28 6e 61 72 72 6f 77 2d 74 6f 2d 72 65 67 69 6f 6e 20 28 72 65 67 ..........(narrow-to-region.(reg
15320 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 ion-beginning).(region-end))....
15340 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 .......(goto-char.(point-max))..
15360 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 67 70 .........(gptel--parse-buffer.gp
15380 74 65 6c 2d 62 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 0a 20 20 20 20 20 20 tel-backend.max-entries)).......
153a0 20 20 20 28 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 ...((derived-mode-p.'org-mode)..
153c0 20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 2d 6f 72 67 29 0a 20 20 .........(require.'gptel-org)...
153e0 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 ........(gptel-org--create-promp
15400 74 20 28 6f 72 20 70 72 6f 6d 70 74 2d 65 6e 64 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a t.(or.prompt-end.(point-max)))).
15420 20 20 20 20 20 20 20 20 20 28 74 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6f 72 20 70 72 6f 6d 70 .........(t.(goto-char.(or.promp
15440 74 2d 65 6e 64 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t-end.(point-max))).............
15460 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 (gptel--parse-buffer.gptel-backe
15480 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 nd.max-entries)))))))..(cl-defge
154a0 6e 65 72 69 63 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 62 61 63 6b 65 neric.gptel--parse-buffer.(backe
154c0 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 22 50 61 72 73 65 20 63 75 72 72 65 6e 74 nd.max-entries)..."Parse.current
154e0 20 62 75 66 66 65 72 20 62 61 63 6b 77 61 72 64 73 20 66 72 6f 6d 20 70 6f 69 6e 74 20 61 6e 64 .buffer.backwards.from.point.and
15500 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 6d 70 74 73 2e 0a 0a 42 41 43 4b .return.a.list.of.prompts...BACK
15520 45 4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a END.is.the.LLM.backend.in.use...
15540 4d 41 58 2d 45 4e 54 52 49 45 53 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 71 75 65 MAX-ENTRIES.is.the.number.of.que
15560 72 69 65 73 2f 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 66 6f 72 0a 63 6f ries/responses.to.include.for.co
15580 6e 74 65 78 62 74 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 70 74 65 6c 2d ntexbt.")..(cl-defgeneric.gptel-
155a0 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 62 61 63 6b 65 6e 64 20 70 72 6f 6d 70 74 73 29 0a -request-data.(backend.prompts).
155c0 20 20 22 47 65 6e 65 72 61 74 65 20 61 20 70 6c 69 73 74 20 6f 66 20 61 6c 6c 20 64 61 74 61 20 .."Generate.a.plist.of.all.data.
155e0 66 6f 72 20 61 6e 20 4c 4c 4d 20 71 75 65 72 79 2e 0a 0a 42 41 43 4b 45 4e 44 20 69 73 20 74 68 for.an.LLM.query...BACKEND.is.th
15600 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 50 52 4f 4d 50 54 53 20 69 e.LLM.backend.in.use...PROMPTS.i
15620 73 20 74 68 65 20 70 6c 69 73 74 20 6f 66 20 70 72 65 76 69 6f 75 73 20 75 73 65 72 20 71 75 65 s.the.plist.of.previous.user.que
15640 72 69 65 73 20 61 6e 64 20 4c 4c 4d 20 72 65 73 70 6f 6e 73 65 73 2e 22 29 0a 0a 3b 3b 20 54 4f ries.and.LLM.responses.")..;;.TO
15660 44 4f 3a 20 55 73 65 20 60 72 75 6e 2d 68 6f 6f 6b 2d 77 72 61 70 70 65 64 27 20 77 69 74 68 20 DO:.Use.`run-hook-wrapped'.with.
15680 61 6e 20 61 63 63 75 6d 75 6c 61 74 6f 72 20 69 6e 73 74 65 61 64 20 74 6f 20 68 61 6e 64 6c 65 an.accumulator.instead.to.handle
156a0 0a 3b 3b 20 62 75 66 66 65 72 2d 6c 6f 63 61 6c 20 68 6f 6f 6b 73 2c 20 65 74 63 2e 0a 28 64 65 .;;.buffer-local.hooks,.etc..(de
156c0 66 75 6e 20 67 70 74 65 6c 2d 2d 74 72 61 6e 73 66 6f 72 6d 2d 72 65 73 70 6f 6e 73 65 20 28 63 fun.gptel--transform-response.(c
156e0 6f 6e 74 65 6e 74 2d 73 74 72 20 62 75 66 66 65 72 29 0a 20 20 22 46 69 6c 74 65 72 20 43 4f 4e ontent-str.buffer)..."Filter.CON
15700 54 45 4e 54 2d 53 54 52 20 74 68 72 6f 75 67 68 20 60 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 TENT-STR.through.`gptel-response
15720 2d 66 69 6c 74 65 72 2d 66 75 6e 63 74 69 6f 6e 73 60 2e 0a 0a 42 55 46 46 45 52 20 69 73 20 70 -filter-functions`...BUFFER.is.p
15740 61 73 73 65 64 20 61 6c 6f 6e 67 20 77 69 74 68 20 43 4f 4e 54 45 4e 54 2d 53 54 52 20 74 6f 20 assed.along.with.CONTENT-STR.to.
15760 65 61 63 68 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 69 73 0a 68 6f 6f 6b 2e 22 0a 20 20 28 each.function.in.this.hook."...(
15780 6c 65 74 20 28 28 66 69 6c 74 65 72 65 64 2d 73 74 72 20 63 6f 6e 74 65 6e 74 2d 73 74 72 29 29 let.((filtered-str.content-str))
157a0 0a 20 20 20 20 28 64 6f 6c 69 73 74 20 28 66 69 6c 74 65 72 2d 66 75 6e 63 20 67 70 74 65 6c 2d .....(dolist.(filter-func.gptel-
157c0 72 65 73 70 6f 6e 73 65 2d 66 69 6c 74 65 72 2d 66 75 6e 63 74 69 6f 6e 73 20 66 69 6c 74 65 72 response-filter-functions.filter
157e0 65 64 2d 73 74 72 29 0a 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 ed-str).......(condition-case.ni
15800 6c 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 66 75 6e 63 74 69 6f 6e 70 20 66 69 6c l...........(when.(functionp.fil
15820 74 65 72 2d 66 75 6e 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 66 69 6c 74 ter-func).............(setq.filt
15840 65 72 65 64 2d 73 74 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 ered-str...................(func
15860 61 6c 6c 20 66 69 6c 74 65 72 2d 66 75 6e 63 20 66 69 6c 74 65 72 65 64 2d 73 74 72 20 62 75 66 all.filter-func.filtered-str.buf
15880 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 28 fer))).........(error..........(
158a0 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 20 27 28 67 70 74 65 6c 20 66 69 6c 74 65 72 2d 66 display-warning.'(gptel.filter-f
158c0 75 6e 63 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 unctions).......................
158e0 20 20 20 20 28 66 6f 72 6d 61 74 20 22 46 75 6e 63 74 69 6f 6e 20 25 53 20 72 65 74 75 72 6e 65 ....(format."Function.%S.returne
15900 64 20 61 6e 20 65 72 72 6f 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d.an.error".....................
15920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 74 65 72 2d 66 75 6e 63 29 29 29 29 29 29 29 ..............filter-func)))))))
15940 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 6f 6e 76 65 72 74 2d 6f 72 67 20 28 63 6f 6e ..(defun.gptel--convert-org.(con
15960 74 65 6e 74 20 62 75 66 66 65 72 29 0a 20 20 22 54 72 61 6e 73 66 6f 72 6d 20 43 4f 4e 54 45 4e tent.buffer)..."Transform.CONTEN
15980 54 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 72 65 71 75 69 72 65 64 20 6d 61 6a 6f 72 2d 6d 6f T.according.to.required.major-mo
159a0 64 65 2e 0a 0a 43 75 72 72 65 6e 74 6c 79 20 6f 6e 6c 79 20 60 6f 72 67 2d 6d 6f 64 65 27 20 69 de...Currently.only.`org-mode'.i
159c0 73 20 68 61 6e 64 6c 65 64 2e 0a 0a 42 55 46 46 45 52 20 69 73 20 74 68 65 20 4c 4c 4d 20 69 6e s.handled...BUFFER.is.the.LLM.in
159e0 74 65 72 61 63 74 69 6f 6e 20 62 75 66 66 65 72 2e 22 0a 20 20 28 70 63 61 73 65 20 28 62 75 66 teraction.buffer."...(pcase.(buf
15a00 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72 2d 6d 6f 64 65 20 62 75 66 66 fer-local-value.'major-mode.buff
15a20 65 72 29 0a 20 20 20 20 28 27 6f 72 67 2d 6d 6f 64 65 20 28 67 70 74 65 6c 2d 2d 63 6f 6e 76 65 er).....('org-mode.(gptel--conve
15a40 72 74 2d 6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 20 63 6f 6e 74 65 6e 74 29 29 0a 20 20 20 20 28 rt-markdown->org.content)).....(
15a60 5f 20 63 6f 6e 74 65 6e 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 72 6c 2d _.content)))..(defun.gptel--url-
15a80 67 65 74 2d 72 65 73 70 6f 6e 73 65 20 28 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 63 61 6c get-response.(info.&optional.cal
15aa0 6c 62 61 63 6b 29 0a 20 20 22 46 65 74 63 68 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 70 72 6f 6d lback)..."Fetch.response.to.prom
15ac0 70 74 20 69 6e 20 49 4e 46 4f 20 66 72 6f 6d 20 74 68 65 20 4c 4c 4d 2e 0a 0a 49 4e 46 4f 20 69 pt.in.INFO.from.the.LLM...INFO.i
15ae0 73 20 61 20 70 6c 69 73 74 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 s.a.plist.with.the.following.key
15b00 73 3a 0a 2d 20 3a 64 61 74 61 20 20 20 20 20 28 74 68 65 20 64 61 74 61 20 62 65 69 6e 67 20 73 s:.-.:data.....(the.data.being.s
15b20 65 6e 74 29 0a 2d 20 3a 62 75 66 66 65 72 20 20 20 28 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 ent).-.:buffer...(the.gptel.buff
15b40 65 72 29 0a 2d 20 3a 70 6f 73 69 74 69 6f 6e 20 28 6d 61 72 6b 65 72 20 61 74 20 77 68 69 63 68 er).-.:position.(marker.at.which
15b60 20 74 6f 20 69 6e 73 65 72 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 29 2e 0a 0a 43 61 6c 6c 20 .to.insert.the.response)...Call.
15b80 43 41 4c 4c 42 41 43 4b 20 77 69 74 68 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 61 6e 64 20 49 CALLBACK.with.the.response.and.I
15ba0 4e 46 4f 20 61 66 74 65 72 77 61 72 64 73 2e 20 20 49 66 20 6f 6d 69 74 74 65 64 0a 74 68 65 20 NFO.afterwards...If.omitted.the.
15bc0 72 65 73 70 6f 6e 73 65 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 63 75 response.is.inserted.into.the.cu
15be0 72 72 65 6e 74 20 62 75 66 66 65 72 20 61 66 74 65 72 20 70 6f 69 6e 74 2e 22 0a 20 20 28 6c 65 rrent.buffer.after.point."...(le
15c00 74 2a 20 28 28 69 6e 68 69 62 69 74 2d 6d 65 73 73 61 67 65 20 74 29 0a 20 20 20 20 20 20 20 20 t*.((inhibit-message.t).........
15c20 20 28 6d 65 73 73 61 67 65 2d 6c 6f 67 2d 6d 61 78 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 .(message-log-max.nil)..........
15c40 28 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 (backend.gptel-backend).........
15c60 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 6d 65 74 68 6f 64 20 22 50 4f 53 54 22 29 0a 20 20 20 .(url-request-method."POST")....
15c80 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 65 78 74 72 61 2d 68 65 61 64 65 72 73 ......(url-request-extra-headers
15ca0 0a 20 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 27 28 28 22 43 6f 6e 74 65 6e 74 2d 54 ...........(append.'(("Content-T
15cc0 79 70 65 22 20 2e 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 22 29 29 0a 20 20 20 20 ype"..."application/json")).....
15ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 68 65 61 64 65 72 ..............(when-let.((header
15d00 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 68 65 61 64 65 72 20 67 70 74 65 6c 2d 62 61 63 .(gptel-backend-header.gptel-bac
15d20 6b 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 kend))).....................(if.
15d40 28 66 75 6e 63 74 69 6f 6e 70 20 68 65 61 64 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 (functionp.header)..............
15d60 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68 65 61 64 65 72 29 20 68 65 61 64 ...........(funcall.header).head
15d80 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 75 72 6c 2d 72 65 71 75 65 73 74 2d 64 61 74 61 er)))).........(url-request-data
15da0 0a 20 20 20 20 20 20 20 20 20 28 65 6e 63 6f 64 65 2d 63 6f 64 69 6e 67 2d 73 74 72 69 6e 67 0a ..........(encode-coding-string.
15dc0 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 28 70 ..........(gptel--json-encode.(p
15de0 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 64 61 74 61 29 29 0a 20 20 20 20 20 20 20 20 20 20 list-get.info.:data))...........
15e00 27 75 74 66 2d 38 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 'utf-8))).....(when.gptel-log-le
15e20 76 65 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 6c 6f 67 67 69 6e 67 0a 20 20 20 20 20 vel...............;logging......
15e40 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 .(when.(eq.gptel-log-level.'debu
15e60 67 29 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d 2d 6a g).........(gptel--log.(gptel--j
15e80 73 6f 6e 2d 65 6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 son-encode......................
15ea0 28 6d 61 70 63 61 72 20 28 6c 61 6d 62 64 61 20 28 70 61 69 72 29 20 28 63 6f 6e 73 20 28 69 6e (mapcar.(lambda.(pair).(cons.(in
15ec0 74 65 72 6e 20 28 63 61 72 20 70 61 69 72 29 29 20 28 63 64 72 20 70 61 69 72 29 29 29 0a 20 20 tern.(car.pair)).(cdr.pair)))...
15ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 2d 72 ...........................url-r
15f00 65 71 75 65 73 74 2d 65 78 74 72 61 2d 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 equest-extra-headers))..........
15f20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 71 75 65 73 74 20 68 65 61 64 65 72 73 22 29 29 0a 20 ..........."request.headers"))..
15f40 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 75 72 6c 2d 72 65 71 75 65 73 74 2d 64 61 74 .....(gptel--log.url-request-dat
15f60 61 20 22 72 65 71 75 65 73 74 20 62 6f 64 79 22 29 29 0a 20 20 20 20 28 75 72 6c 2d 72 65 74 72 a."request.body")).....(url-retr
15f80 69 65 76 65 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 2d 75 72 6c 20 28 67 70 74 65 6c 2d 62 ieve.(let.((backend-url.(gptel-b
15fa0 61 63 6b 65 6e 64 2d 75 72 6c 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 ackend-url.gptel-backend))).....
15fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 62 ................(if.(functionp.b
15fe0 61 63 6b 65 6e 64 2d 75 72 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ackend-url).....................
16000 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 62 61 63 6b 65 6e 64 2d 75 72 6c 29 20 62 61 63 6b 65 6e ....(funcall.backend-url).backen
16020 64 2d 75 72 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 d-url))...................(lambd
16040 61 20 28 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 a.(_).....................(pcase
16060 2d 6c 65 74 20 28 28 60 28 2c 72 65 73 70 6f 6e 73 65 20 2c 68 74 74 70 2d 6d 73 67 20 2c 65 72 -let.((`(,response.,http-msg.,er
16080 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ror)............................
160a0 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 72 6c 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 ......(gptel--url-parse-response
160c0 20 62 61 63 6b 65 6e 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 .backend.(current-buffer))))....
160e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 69 6e ...................(plist-put.in
16100 66 6f 20 3a 73 74 61 74 75 73 20 68 74 74 70 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 fo.:status.http-msg)............
16120 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 65 72 72 6f 72 20 28 70 6c 69 73 74 2d 70 75 ...........(when.error.(plist-pu
16140 74 20 69 6e 66 6f 20 3a 65 72 72 6f 72 20 65 72 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 t.info.:error.error))...........
16160 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 20 63 61 6c 6c 62 61 63 ............(funcall.(or.callbac
16180 6b 20 23 27 67 70 74 65 6c 2d 2d 69 6e 73 65 72 74 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 k.#'gptel--insert-response).....
161a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 70 6f ...........................respo
161c0 6e 73 65 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nse.info).......................
161e0 28 6b 69 6c 6c 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (kill-buffer))).................
16200 20 20 6e 69 6c 20 74 20 6e 69 6c 29 29 29 0a 0a 28 63 6c 2d 64 65 66 67 65 6e 65 72 69 63 20 67 ..nil.t.nil)))..(cl-defgeneric.g
16220 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 62 61 63 6b 65 6e 64 20 72 65 ptel--parse-response.(backend.re
16240 73 70 6f 6e 73 65 20 70 72 6f 63 2d 69 6e 66 6f 29 0a 20 20 22 52 65 73 70 6f 6e 73 65 20 65 78 sponse.proc-info)..."Response.ex
16260 74 72 61 63 74 6f 72 20 66 6f 72 20 4c 4c 4d 20 72 65 71 75 65 73 74 73 2e 0a 0a 42 41 43 4b 45 tractor.for.LLM.requests...BACKE
16280 4e 44 20 69 73 20 74 68 65 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 20 69 6e 20 75 73 65 2e 0a 0a 52 ND.is.the.LLM.backend.in.use...R
162a0 45 53 50 4f 4e 53 45 20 69 73 20 74 68 65 20 70 61 72 73 65 64 20 4a 53 4f 4e 20 6f 66 20 74 68 ESPONSE.is.the.parsed.JSON.of.th
162c0 65 20 72 65 73 70 6f 6e 73 65 2c 20 61 73 20 61 20 70 6c 69 73 74 2e 0a 0a 50 52 4f 43 2d 49 4e e.response,.as.a.plist...PROC-IN
162e0 46 4f 20 69 73 20 61 20 70 6c 69 73 74 20 77 69 74 68 20 70 72 6f 63 65 73 73 20 69 6e 66 6f 72 FO.is.a.plist.with.process.infor
16300 6d 61 74 69 6f 6e 20 61 6e 64 20 6f 74 68 65 72 20 63 6f 6e 74 65 78 74 2e 0a 53 65 65 20 60 67 mation.and.other.context..See.`g
16320 70 74 65 6c 2d 63 75 72 6c 2d 2d 67 65 74 2d 72 65 73 70 6f 6e 73 65 27 20 66 6f 72 20 69 74 73 ptel-curl--get-response'.for.its
16340 20 63 6f 6e 74 65 6e 74 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 .contents.")..(defvar.url-http-e
16360 6e 64 2d 6f 66 2d 68 65 61 64 65 72 73 29 0a 28 64 65 66 76 61 72 20 75 72 6c 2d 68 74 74 70 2d nd-of-headers).(defvar.url-http-
16380 72 65 73 70 6f 6e 73 65 2d 73 74 61 74 75 73 29 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 75 response-status).(defun.gptel--u
163a0 72 6c 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 62 61 63 6b 65 6e 64 20 72 65 73 70 6f rl-parse-response.(backend.respo
163c0 6e 73 65 2d 62 75 66 66 65 72 29 0a 20 20 22 50 61 72 73 65 20 72 65 73 70 6f 6e 73 65 20 66 72 nse-buffer)..."Parse.response.fr
163e0 6f 6d 20 42 41 43 4b 45 4e 44 20 69 6e 20 52 45 53 50 4f 4e 53 45 2d 42 55 46 46 45 52 2e 22 0a om.BACKEND.in.RESPONSE-BUFFER.".
16400 20 20 28 77 68 65 6e 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 72 65 73 70 6f 6e 73 65 2d ..(when.(buffer-live-p.response-
16420 62 75 66 66 65 72 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 buffer).....(with-current-buffer
16440 20 72 65 73 70 6f 6e 73 65 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 .response-buffer.......(when.gpt
16460 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 6c 6f 67 67 69 6e el-log-level.............;loggin
16480 67 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 g.........(save-excursion.......
164a0 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 ....(goto-char.url-http-end-of-h
164c0 65 61 64 65 72 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 65 71 20 67 70 74 65 eaders)...........(when.(eq.gpte
164e0 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 27 64 65 62 75 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 l-log-level.'debug).............
16500 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 (gptel--log.(gptel--json-encode.
16520 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 (buffer-substring-no-properties.
16540 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 (point-min).(point)))...........
16560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 68 65 61 64 65 72 73 22 .............."response.headers"
16580 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 6c 6f 67 20 28 62 75 66 66 65 72 ))...........(gptel--log.(buffer
165a0 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 29 -substring-no-properties.(point)
165c0 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(point-max))...................
165e0 20 20 20 20 22 72 65 73 70 6f 6e 73 65 20 62 6f 64 79 22 29 29 29 0a 20 20 20 20 20 20 28 69 66 ...."response.body"))).......(if
16600 2d 6c 65 74 2a 20 28 28 68 74 74 70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 62 -let*.((http-msg.(string-trim.(b
16620 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d uffer-substring.(line-beginning-
16640 70 6f 73 69 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 position).......................
16660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
16680 20 20 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 29 0a 20 20 20 20 20 20 ...(line-end-position)))).......
166a0 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 28 70 72 6f 67 6e 20 28 67 6f 74 6f ..........(response.(progn.(goto
166c0 2d 63 68 61 72 20 75 72 6c 2d 68 74 74 70 2d 65 6e 64 2d 6f 66 2d 68 65 61 64 65 72 73 29 0a 20 -char.url-http-end-of-headers)..
166e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
16700 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 (condition-case.nil.............
16720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d .........................(gptel-
16740 2d 6a 73 6f 6e 2d 72 65 61 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -json-read).....................
16760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 20 27 6a 73 6f 6e 2d 72 65 61 64 ...............(error.'json-read
16780 2d 65 72 72 6f 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 -error)))))...........(cond.....
167a0 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 20 48 61 6e 64 6c 65 20 74 68 65 20 63 61 73 65 ........;;.FIXME.Handle.the.case
167c0 20 77 68 65 72 65 20 48 54 54 50 20 31 30 30 20 69 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 48 .where.HTTP.100.is.followed.by.H
167e0 54 54 50 20 28 6e 6f 74 20 32 30 30 29 20 42 55 47 20 23 31 39 34 0a 20 20 20 20 20 20 20 20 20 TTP.(not.200).BUG.#194..........
16800 20 20 28 28 6f 72 20 28 6d 65 6d 71 20 75 72 6c 2d 68 74 74 70 2d 72 65 73 70 6f 6e 73 65 2d 73 ..((or.(memq.url-http-response-s
16820 74 61 74 75 73 20 27 28 32 30 30 20 31 30 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tatus.'(200.100))...............
16840 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 2d 70 20 22 5c 5c 28 3f 3a 31 5c 5c 7c 32 5c 5c 29 ..(string-match-p."\\(?:1\\|2\\)
16860 30 30 20 4f 4b 22 20 68 74 74 70 2d 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 00.OK".http-msg)).............(l
16880 69 73 74 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 ist.(string-trim.(gptel--parse-r
168a0 65 73 70 6f 6e 73 65 20 62 61 63 6b 65 6e 64 20 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 esponse.backend.response........
168c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
168e0 20 20 20 20 20 20 60 28 3a 62 75 66 66 65 72 20 2c 72 65 73 70 6f 6e 73 65 2d 62 75 66 66 65 72 ......`(:buffer.,response-buffer
16900 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 2d 6d 73 67 29 )))....................http-msg)
16920 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 )............((plist-get.respons
16940 65 20 3a 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 65 72 e.:error).............(let*.((er
16960 72 6f 72 2d 64 61 74 61 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 72 ror-data.(plist-get.response.:er
16980 72 6f 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d ror))....................(error-
169a0 6d 73 67 20 28 70 6c 69 73 74 2d 67 65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 6d 65 73 73 61 msg.(plist-get.error-data.:messa
169c0 67 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 2d 74 ge))....................(error-t
169e0 79 70 65 20 28 70 6c 69 73 74 2d 67 65 74 20 65 72 72 6f 72 2d 64 61 74 61 20 3a 74 79 70 65 29 ype.(plist-get.error-data.:type)
16a00 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 2d 6e 61 )....................(backend-na
16a20 6d 65 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 62 61 63 6b 65 6e 64 29 29 me.(gptel-backend-name.backend))
16a40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 65 72 72 )...............(if.(stringp.err
16a60 6f 72 2d 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 or-data)...................(prog
16a80 6e 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62 n.(message."%s.error:.(%s).%s".b
16aa0 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d 6d 73 67 20 65 72 72 6f 72 2d 64 61 74 61 29 ackend-name.http-msg.error-data)
16ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 ..........................(setq.
16ae0 65 72 72 6f 72 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 20 65 72 72 6f 72 2d 64 61 74 error-msg.(string-trim.error-dat
16b00 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 74 72 69 a))).................(when.(stri
16b20 6e 67 70 20 65 72 72 6f 72 2d 6d 73 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ngp.error-msg)..................
16b40 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 65 72 72 6f 72 3a 20 28 25 73 29 20 25 73 22 20 62 61 .(message."%s.error:.(%s).%s".ba
16b60 63 6b 65 6e 64 2d 6e 61 6d 65 20 68 74 74 70 2d 6d 73 67 20 28 73 74 72 69 6e 67 2d 74 72 69 6d ckend-name.http-msg.(string-trim
16b80 20 65 72 72 6f 72 2d 6d 73 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 .error-msg))).................(w
16ba0 68 65 6e 20 65 72 72 6f 72 2d 74 79 70 65 20 28 73 65 74 71 20 68 74 74 70 2d 6d 73 67 20 28 63 hen.error-type.(setq.http-msg.(c
16bc0 6f 6e 63 61 74 20 22 28 22 20 20 68 74 74 70 2d 6d 73 67 20 22 29 20 22 20 28 73 74 72 69 6e 67 oncat."("..http-msg.").".(string
16be0 2d 74 72 69 6d 20 65 72 72 6f 72 2d 74 79 70 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 -trim.error-type)))))...........
16c00 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d ....(list.nil.(concat."(".http-m
16c20 73 67 20 22 29 20 22 20 28 6f 72 20 65 72 72 6f 72 2d 6d 73 67 20 22 22 29 29 29 29 29 0a 20 20 sg.").".(or.error-msg."")))))...
16c40 20 20 20 20 20 20 20 20 20 28 28 65 71 20 72 65 73 70 6f 6e 73 65 20 27 6a 73 6f 6e 2d 72 65 61 .........((eq.response.'json-rea
16c60 64 2d 65 72 72 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 6e 69 6c 20 28 d-error).............(list.nil.(
16c80 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 4d 61 6c 66 6f 72 6d 65 64 concat."(".http-msg.").Malformed
16ca0 20 4a 53 4f 4e 20 69 6e 20 72 65 73 70 6f 6e 73 65 2e 22 29 20 22 6a 73 6f 6e 2d 72 65 61 64 2d .JSON.in.response.")."json-read-
16cc0 65 72 72 6f 72 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 6c 69 73 74 20 6e 69 6c error"))............(t.(list.nil
16ce0 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c 64 20 6e .(concat."(".http-msg.").Could.n
16d00 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 20 20 20 ot.parse.HTTP.response.").......
16d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 .............."Could.not.parse.H
16d40 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 TTP.response."))).........(list.
16d60 6e 69 6c 20 28 63 6f 6e 63 61 74 20 22 28 22 20 68 74 74 70 2d 6d 73 67 20 22 29 20 43 6f 75 6c nil.(concat."(".http-msg.").Coul
16d80 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 2e 22 29 0a 20 20 20 d.not.parse.HTTP.response.")....
16da0 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 70 61 72 73 65 20 48 54 54 50 ..........."Could.not.parse.HTTP
16dc0 20 72 65 73 70 6f 6e 73 65 2e 22 29 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 .response.")))))..(cl-defun.gpte
16de0 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c 20 28 26 6b 65 79 20 28 62 61 63 6b 65 6e 64 l--sanitize-model.(&key.(backend
16e00 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .gptel-backend).................
16e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 20 67 70 74 ......................(model.gpt
16e40 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 el-model).......................
16e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 68 6f 6f 73 68 20 74 29 29 0a 20 20 22 43 ................(shoosh.t))..."C
16e80 68 65 63 6b 20 69 66 20 4d 4f 44 45 4c 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 42 41 heck.if.MODEL.is.available.in.BA
16ea0 43 4b 45 4e 44 2c 20 61 64 6a 75 73 74 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 0a 49 66 20 53 CKEND,.adjust.accordingly...If.S
16ec0 48 4f 4f 53 48 20 69 73 20 74 72 75 65 2c 20 64 6f 6e 27 74 20 69 73 73 75 65 20 61 20 77 61 72 HOOSH.is.true,.don't.issue.a.war
16ee0 6e 69 6e 67 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 61 76 61 69 6c 61 62 6c 65 20 28 67 70 74 65 ning."...(let*.((available.(gpte
16f00 6c 2d 62 61 63 6b 65 6e 64 2d 6d 6f 64 65 6c 73 20 62 61 63 6b 65 6e 64 29 29 29 0a 20 20 20 20 l-backend-models.backend))).....
16f20 28 75 6e 6c 65 73 73 20 28 6d 65 6d 62 65 72 20 6d 6f 64 65 6c 20 61 76 61 69 6c 61 62 6c 65 29 (unless.(member.model.available)
16f40 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 66 61 6c 6c 62 61 63 6b 20 28 63 61 72 20 61 76 61 69 .......(let.((fallback.(car.avai
16f60 6c 61 62 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 73 68 6f 6f 73 68 0a lable))).........(unless.shoosh.
16f80 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 77 61 72 6e 69 6e 67 0a 20 20 20 20 20 ..........(display-warning......
16fa0 20 20 20 20 20 20 27 67 70 74 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 ......'gptel............(format.
16fc0 28 63 6f 6e 63 61 74 20 22 50 72 65 66 65 72 72 65 64 20 60 67 70 74 65 6c 2d 6d 6f 64 65 6c 27 (concat."Preferred.`gptel-model'
16fe0 20 5c 22 25 73 5c 22 20 6e 6f 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .\"%s\".not"....................
17000 20 20 20 20 20 20 20 20 22 73 75 70 70 6f 72 74 65 64 20 69 6e 20 5c 22 25 73 5c 22 2c 20 75 73 ........"supported.in.\"%s\",.us
17020 69 6e 67 20 5c 22 25 73 5c 22 20 69 6e 73 74 65 61 64 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 ing.\"%s\".instead")............
17040 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d ........model.(gptel-backend-nam
17060 65 20 62 61 63 6b 65 6e 64 29 20 66 61 6c 6c 62 61 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 28 e.backend).fallback))).........(
17080 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 66 61 6c 6c 62 61 63 6b 29 setq-local.gptel-model.fallback)
170a0 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 67 70 74 65 ))))..;;;###autoload.(defun.gpte
170c0 6c 20 28 6e 61 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 20 69 6e 69 74 69 61 6c 20 69 6e 74 65 l.(name.&optional._.initial.inte
170e0 72 61 63 74 69 76 65 70 29 0a 20 20 22 53 77 69 74 63 68 20 74 6f 20 6f 72 20 73 74 61 72 74 20 ractivep)..."Switch.to.or.start.
17100 61 20 63 68 61 74 20 73 65 73 73 69 6f 6e 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 57 69 74 68 20 a.chat.session.with.NAME...With.
17120 61 20 70 72 65 66 69 78 20 61 72 67 2c 20 71 75 65 72 79 20 66 6f 72 20 61 20 28 6e 65 77 29 20 a.prefix.arg,.query.for.a.(new).
17140 73 65 73 73 69 6f 6e 20 6e 61 6d 65 2e 0a 0a 41 73 6b 20 66 6f 72 20 41 50 49 2d 4b 45 59 20 69 session.name...Ask.for.API-KEY.i
17160 66 20 60 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 27 20 69 73 20 75 6e 73 65 74 2e 0a 0a 49 66 20 f.`gptel-api-key'.is.unset...If.
17180 72 65 67 69 6f 6e 20 69 73 20 61 63 74 69 76 65 2c 20 75 73 65 20 69 74 20 61 73 20 74 68 65 20 region.is.active,.use.it.as.the.
171a0 49 4e 49 54 49 41 4c 20 70 72 6f 6d 70 74 2e 20 20 52 65 74 75 72 6e 73 20 74 68 65 0a 62 75 66 INITIAL.prompt...Returns.the.buf
171c0 66 65 72 20 63 72 65 61 74 65 64 20 6f 72 20 73 77 69 74 63 68 65 64 20 74 6f 2e 0a 0a 49 4e 54 fer.created.or.switched.to...INT
171e0 45 52 41 43 54 49 56 45 50 20 69 73 20 74 20 77 68 65 6e 20 67 70 74 65 6c 20 69 73 20 63 61 6c ERACTIVEP.is.t.when.gptel.is.cal
17200 6c 65 64 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 led.interactively."...(interacti
17220 76 65 0a 20 20 20 28 6c 65 74 2a 20 28 28 62 61 63 6b 65 6e 64 20 28 64 65 66 61 75 6c 74 2d 76 ve....(let*.((backend.(default-v
17240 61 6c 75 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 alue.'gptel-backend))...........
17260 28 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 (backend-name............(format
17280 20 22 2a 25 73 2a 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 62 61 63 6b ."*%s*".(gptel-backend-name.back
172a0 65 6e 64 29 29 29 29 0a 20 20 20 20 20 28 6c 69 73 74 20 28 69 66 20 63 75 72 72 65 6e 74 2d 70 end))))......(list.(if.current-p
172c0 72 65 66 69 78 2d 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 73 refix-arg................(read-s
172e0 74 72 69 6e 67 20 22 53 65 73 73 69 6f 6e 20 6e 61 6d 65 3a 20 22 0a 20 20 20 20 20 20 20 20 20 tring."Session.name:."..........
17300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 ...................(generate-new
17320 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -buffer-name....................
17340 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 ..........backend-name))........
17360 20 20 20 20 20 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 ......backend-name)............(
17380 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 condition-case.nil..............
173a0 20 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 ..(gptel--get-api-key...........
173c0 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6b 65 79 20 62 61 63 6b 65 6e 64 ......(gptel-backend-key.backend
173e0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 72 72 6f 72 20 75 73 65 72 2d 65 72 72 ))..............((error.user-err
17400 6f 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 61 70 or)...............(setq.gptel-ap
17420 69 2d 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d i-key.....................(read-
17440 70 61 73 73 77 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 passwd......................(for
17460 6d 61 74 20 22 25 73 20 41 50 49 20 6b 65 79 3a 20 22 20 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 29 mat."%s.API.key:.".backend-name)
17480 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 75 73 65 2d 72 65 67 69 6f 6e ))))............(and.(use-region
174a0 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 -p).................(buffer-subs
174c0 74 72 69 6e 67 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 tring.(region-beginning)........
174e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 ...........................(regi
17500 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 74 29 29 29 0a 20 20 28 77 69 74 on-end)))............t)))...(wit
17520 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 h-current-buffer.(get-buffer-cre
17540 61 74 65 20 6e 61 6d 65 29 0a 20 20 20 20 28 63 6f 6e 64 20 3b 53 65 74 20 6d 61 6a 6f 72 20 6d ate.name).....(cond.;Set.major.m
17560 6f 64 65 0a 20 20 20 20 20 28 28 65 71 20 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 64 ode......((eq.major-mode.gptel-d
17580 65 66 61 75 6c 74 2d 6d 6f 64 65 29 29 0a 20 20 20 20 20 28 28 65 71 20 67 70 74 65 6c 2d 64 65 efault-mode))......((eq.gptel-de
175a0 66 61 75 6c 74 2d 6d 6f 64 65 20 27 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 74 65 fault-mode.'text-mode).......(te
175c0 78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 76 69 73 75 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 xt-mode).......(visual-line-mode
175e0 20 31 29 29 0a 20 20 20 20 20 28 74 20 28 66 75 6e 63 61 6c 6c 20 67 70 74 65 6c 2d 64 65 66 61 .1))......(t.(funcall.gptel-defa
17600 75 6c 74 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 ult-mode))).....(gptel--sanitize
17620 2d 6d 6f 64 65 6c 20 3a 62 61 63 6b 65 6e 64 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 27 -model.:backend.(default-value.'
17640 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-backend)..................
17660 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 20 28 64 65 66 61 75 6c 74 2d 76 61 6c 75 65 20 ..........:model.(default-value.
17680 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'gptel-model)...................
176a0 20 20 20 20 20 20 20 20 20 3a 73 68 6f 6f 73 68 20 6e 69 6c 29 0a 20 20 20 20 28 75 6e 6c 65 73 .........:shoosh.nil).....(unles
176c0 73 20 67 70 74 65 6c 2d 6d 6f 64 65 20 28 67 70 74 65 6c 2d 6d 6f 64 65 20 31 29 29 0a 20 20 20 s.gptel-mode.(gptel-mode.1))....
176e0 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 28 73 6b .(goto-char.(point-max)).....(sk
17700 69 70 2d 63 68 61 72 73 2d 62 61 63 6b 77 61 72 64 20 22 5c 74 5c 72 5c 6e 22 29 0a 20 20 20 20 ip-chars-backward."\t\r\n").....
17720 28 69 66 20 28 62 6f 62 70 29 20 28 69 6e 73 65 72 74 20 28 6f 72 20 69 6e 69 74 69 61 6c 20 28 (if.(bobp).(insert.(or.initial.(
17740 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 0a 20 gptel-prompt-prefix-string))))..
17760 20 20 20 28 77 68 65 6e 20 69 6e 74 65 72 61 63 74 69 76 65 70 0a 20 20 20 20 20 20 28 64 69 73 ...(when.interactivep.......(dis
17780 70 6c 61 79 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 67 70 74 play-buffer.(current-buffer).gpt
177a0 65 6c 2d 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 61 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 el-display-buffer-action).......
177c0 28 6d 65 73 73 61 67 65 20 22 53 65 6e 64 20 79 6f 75 72 20 71 75 65 72 79 20 77 69 74 68 20 25 (message."Send.your.query.with.%
177e0 73 21 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 69 74 75 74 65 2d 63 s!"................(substitute-c
17800 6f 6d 6d 61 6e 64 2d 6b 65 79 73 20 22 5c 5c 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 29 29 29 0a ommand-keys."\\[gptel-send]"))).
17820 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 0a 0c 0a 3b 3b 20 52 65 73 ....(current-buffer)))....;;.Res
17840 70 6f 6e 73 65 20 74 77 65 61 6b 69 6e 67 20 63 6f 6d 6d 61 6e 64 73 0a 0a 28 64 65 66 75 6e 20 ponse.tweaking.commands..(defun.
17860 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 20 28 gptel--attach-response-history.(
17880 68 69 73 74 6f 72 79 20 26 6f 70 74 69 6f 6e 61 6c 20 62 75 66 29 0a 20 20 22 41 74 74 61 63 68 history.&optional.buf)..."Attach
178a0 20 48 49 53 54 4f 52 59 20 74 6f 20 74 68 65 20 6e 65 78 74 20 67 70 74 65 6c 20 72 65 73 70 6f .HISTORY.to.the.next.gptel.respo
178c0 6e 73 65 20 69 6e 20 62 75 66 66 65 72 20 42 55 46 2e 0a 0a 48 49 53 54 4f 52 59 20 69 73 20 61 nse.in.buffer.BUF...HISTORY.is.a
178e0 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 20 74 79 70 69 63 61 6c 6c 79 20 63 6f 6e 74 61 .list.of.strings.typically.conta
17900 69 6e 69 6e 67 20 74 65 78 74 20 72 65 70 6c 61 63 65 64 0a 62 79 20 67 70 74 65 6c 2e 20 20 42 ining.text.replaced.by.gptel...B
17920 55 46 20 69 73 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 20 69 66 20 6e 6f 74 20 UF.is.the.current.buffer.if.not.
17940 73 70 65 63 69 66 69 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 6d 61 69 6e specified...This.is.used.to.main
17960 74 61 69 6e 20 76 61 72 69 61 6e 74 73 20 6f 66 20 70 72 6f 6d 70 74 73 20 6f 72 20 72 65 73 70 tain.variants.of.prompts.or.resp
17980 6f 6e 73 65 73 20 74 6f 20 64 69 66 66 0a 61 67 61 69 6e 73 74 20 69 66 20 72 65 71 75 69 72 65 onses.to.diff.against.if.require
179a0 64 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 6f 72 20 62 d."...(with-current-buffer.(or.b
179c0 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 28 6c 65 74 72 65 63 uf.(current-buffer)).....(letrec
179e0 20 28 28 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 61 66 74 65 72 0a 20 20 20 20 20 20 20 20 20 .((gptel--attach-after..........
17a00 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 20 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(lambda.(b.e)..............
17a20 20 20 20 28 70 75 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 62 20 65 20 27 67 70 74 65 6c ...(put-text-property.b.e.'gptel
17a40 2d 68 69 73 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -history........................
17a60 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 28 65 6e 73 75 72 65 2d 6c 69 73 74 ............(append.(ensure-list
17a80 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .history).......................
17aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 .....................(get-char-p
17ac0 72 6f 70 65 72 74 79 20 28 31 2d 20 65 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 29 roperty.(1-.e).'gptel-history)))
17ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 67 .................(remove-hook.'g
17b00 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 0a 20 20 20 ptel-post-response-functions....
17b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d ..........................gptel-
17b40 2d 61 74 74 61 63 68 2d 61 66 74 65 72 20 27 6c 6f 63 61 6c 29 29 29 29 0a 20 20 20 20 20 20 28 -attach-after.'local)))).......(
17b60 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 add-hook.'gptel-post-response-fu
17b80 6e 63 74 69 6f 6e 73 20 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 61 66 74 65 72 0a 20 20 20 20 nctions.gptel--attach-after.....
17ba0 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 27 6c 6f 63 61 6c 29 29 29 29 0a 0a 28 64 65 66 ............nil.'local))))..(def
17bc0 75 6e 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 20 28 26 6f 70 74 69 6f 6e 61 6c 20 61 72 67 20 62 un.gptel--ediff.(&optional.arg.b
17be0 6f 75 6e 64 73 2d 66 75 6e 63 29 0a 20 20 22 45 64 69 66 66 20 72 65 73 70 6f 6e 73 65 20 61 74 ounds-func)..."Ediff.response.at
17c00 20 70 6f 69 6e 74 20 61 67 61 69 6e 73 74 20 70 72 65 76 69 6f 75 73 20 67 70 74 65 6c 20 72 65 .point.against.previous.gptel.re
17c20 73 70 6f 6e 73 65 73 2e 0a 0a 49 66 20 70 72 65 66 69 78 20 41 52 47 20 69 73 20 6e 6f 6e 2d 6e sponses...If.prefix.ARG.is.non-n
17c40 69 6c 2c 20 73 65 6c 65 63 74 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 il,.select.the.previous.response
17c60 20 74 6f 20 65 64 69 66 66 0a 61 67 61 69 6e 73 74 20 69 6e 74 65 72 61 63 74 69 76 65 6c 79 2e .to.ediff.against.interactively.
17c80 0a 0a 49 66 20 73 70 65 63 69 66 69 65 64 2c 20 75 73 65 20 42 4f 55 4e 44 53 2d 46 55 4e 43 20 ..If.specified,.use.BOUNDS-FUNC.
17ca0 74 6f 20 63 6f 6d 70 75 74 65 20 74 68 65 20 62 6f 75 6e 64 73 20 6f 66 20 74 68 65 0a 72 65 73 to.compute.the.bounds.of.the.res
17cc0 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65 ponse.at.point...This.can.be.use
17ce0 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a 63 6f 6e 74 65 78 74 20 d.to.include.additional.context.
17d00 66 6f 72 20 74 68 65 20 65 64 69 66 66 20 73 65 73 73 69 6f 6e 2e 22 0a 20 20 28 69 6e 74 65 72 for.the.ediff.session."...(inter
17d20 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 77 68 65 6e 20 28 67 70 74 65 6c 2d 2d 61 74 2d 72 active."P")...(when.(gptel--at-r
17d40 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 29 0a 20 20 20 20 28 70 63 61 73 65 2d 6c 65 esponse-history-p).....(pcase-le
17d60 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 t*.((`(,beg...,end).(funcall.(or
17d80 20 62 6f 75 6e 64 73 2d 66 75 6e 63 20 23 27 67 70 74 65 6c 2d 2d 67 65 74 2d 62 6f 75 6e 64 73 .bounds-func.#'gptel--get-bounds
17da0 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 76 2d 72 65 73 70 6f )))..................(prev-respo
17dc0 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 61 72 67 0a 20 20 nse...................(if.arg...
17de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d ....................(completing-
17e00 72 65 61 64 20 22 43 68 6f 6f 73 65 20 72 65 73 70 6f 6e 73 65 20 76 61 72 69 61 6e 74 20 74 6f read."Choose.response.variant.to
17e20 20 64 69 66 66 20 61 67 61 69 6e 73 74 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .diff.against:."................
17e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 ........................(get-cha
17e60 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 r-property.(point).'gptel-histor
17e80 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y)..............................
17ea0 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........nil.t)................
17ec0 20 20 20 20 20 28 63 61 72 2d 73 61 66 65 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 .....(car-safe.(get-char-propert
17ee0 79 20 28 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 29 29 0a 20 20 20 y.(point).'gptel-history))))....
17f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6d 6f 64 65 20 6d 61 6a 6f 72 ..............(buffer-mode.major
17f20 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 6e 61 6d 65 -mode)..................(bufname
17f40 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .(buffer-name)).................
17f60 20 28 60 28 2c 6e 65 77 2d 62 75 66 20 2c 6e 65 77 2d 62 65 67 20 2c 6e 65 77 2d 65 6e 64 29 0a .(`(,new-buf.,new-beg.,new-end).
17f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d ..................(with-current-
17fa0 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 buffer.......................(ge
17fc0 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 28 63 6f 6e 63 61 74 20 62 75 66 6e 61 6d 65 20 t-buffer-create.(concat.bufname.
17fe0 22 2d 50 52 45 56 49 4f 55 53 2d 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "-PREVIOUS-*")).................
18000 20 20 20 20 28 6c 65 74 20 28 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 ....(let.((inhibit-read-only.t))
18020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 .......................(erase-bu
18040 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c ffer).......................(del
18060 61 79 2d 6d 6f 64 65 2d 68 6f 6f 6b 73 20 28 66 75 6e 63 61 6c 6c 20 62 75 66 66 65 72 2d 6d 6f ay-mode-hooks.(funcall.buffer-mo
18080 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 76 69 73 75 de)).......................(visu
180a0 61 6c 2d 6c 69 6e 65 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 al-line-mode)...................
180c0 20 20 20 20 28 69 6e 73 65 72 74 20 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 ....(insert.prev-response)......
180e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 .................(goto-char.(poi
18100 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 nt-min)).......................(
18120 6c 69 73 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f 69 6e 74 2d 6d 69 6e list.(current-buffer).(point-min
18140 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 ).(point-max)))))).......(unless
18160 20 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 67 70 74 65 .prev-response.(user-error."gpte
18180 6c 20 72 65 73 70 6f 6e 73 65 20 69 73 20 61 64 64 69 74 69 76 65 3a 20 6e 6f 20 63 68 61 6e 67 l.response.is.additive:.no.chang
181a0 65 73 20 74 6f 20 65 64 69 66 66 22 29 29 0a 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 65 es.to.ediff")).......(require.'e
181c0 64 69 66 66 29 0a 20 20 20 20 20 20 28 6c 65 74 72 65 63 20 28 28 63 77 63 20 28 63 75 72 72 65 diff).......(letrec.((cwc.(curre
181e0 6e 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 nt-window-configuration)).......
18200 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 0a 20 .........(gptel--ediff-restore..
18220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 ...............(lambda.().......
18240 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 ............(when.(window-config
18260 75 72 61 74 69 6f 6e 2d 70 20 63 77 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 uration-p.cwc)..................
18280 20 20 20 28 73 65 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 77 63 ...(set-window-configuration.cwc
182a0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 ))...................(kill-buffe
182c0 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 28 63 6f 6e 63 61 74 20 62 75 66 6e 61 6d 65 20 22 2d r.(get-buffer.(concat.bufname."-
182e0 50 52 45 56 49 4f 55 53 2d 2a 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 PREVIOUS-*")))..................
18300 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 28 63 6f 6e 63 61 .(kill-buffer.(get-buffer.(conca
18320 74 20 62 75 66 6e 61 6d 65 20 22 2d 43 55 52 52 45 4e 54 2d 2a 22 29 29 29 0a 20 20 20 20 20 20 t.bufname."-CURRENT-*"))).......
18340 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d ............(remove-hook.'ediff-
18360 71 75 69 74 2d 68 6f 6f 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 29 quit-hook.gptel--ediff-restore))
18380 29 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 )).........(add-hook.'ediff-quit
183a0 2d 68 6f 6f 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 0a 20 20 20 20 -hook.gptel--ediff-restore).....
183c0 20 20 20 20 28 61 70 70 6c 79 0a 20 20 20 20 20 20 20 20 20 23 27 65 64 69 66 66 2d 72 65 67 69 ....(apply..........#'ediff-regi
183e0 6f 6e 73 2d 69 6e 74 65 72 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 ons-internal..........(get-buffe
18400 72 20 28 65 64 69 66 66 2d 6d 61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 66 65 72 20 28 63 75 72 r.(ediff-make-cloned-buffer.(cur
18420 72 65 6e 74 2d 62 75 66 66 65 72 29 20 22 2d 43 55 52 52 45 4e 54 2d 2a 22 29 29 0a 20 20 20 20 rent-buffer)."-CURRENT-*")).....
18440 20 20 20 20 20 62 65 67 20 65 6e 64 20 6e 65 77 2d 62 75 66 20 6e 65 77 2d 62 65 67 20 6e 65 77 .....beg.end.new-buf.new-beg.new
18460 2d 65 6e 64 0a 20 20 20 20 20 20 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 -end..........nil..........(list
18480 20 27 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 77 6f 72 64 77 69 73 65 20 27 77 6f 72 64 2d 77 .'ediff-regions-wordwise.'word-w
184a0 69 73 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 28 69 66 20 28 74 72 61 6e 73 69 ise.nil)..........;;.(if.(transi
184c0 65 6e 74 2d 61 72 67 2d 76 61 6c 75 65 20 22 2d 77 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 20 ent-arg-value."-w".args)........
184e0 20 20 3b 3b 20 20 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 77 6f ..;;.....(list.'ediff-regions-wo
18500 72 64 77 69 73 65 20 27 77 6f 72 64 2d 77 69 73 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 rdwise.'word-wise.nil)..........
18520 3b 3b 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 6c 69 6e 65 77 69 ;;...(list.'ediff-regions-linewi
18540 73 65 20 6e 69 6c 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 29 29 29 29 29 0a 0a 28 64 65 se.nil.nil))..........)))))..(de
18560 66 75 6e 20 67 70 74 65 6c 2d 2d 6d 61 72 6b 2d 72 65 73 70 6f 6e 73 65 20 28 29 0a 20 20 22 4d fun.gptel--mark-response.()..."M
18580 61 72 6b 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 2c 20 69 66 20 ark.gptel.response.at.point,.if.
185a0 61 6e 79 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 75 6e 6c 65 73 73 20 any."...(interactive)...(unless.
185c0 28 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29 20 28 75 73 65 72 2d 65 72 72 (gptel--in-response-p).(user-err
185e0 6f 72 20 22 4e 6f 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 22 29 or."No.gptel.response.at.point")
18600 29 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 )...(pcase-let*.((`(,beg...,end)
18620 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 28 67 6f 74 6f .(gptel--get-bounds))).....(goto
18640 2d 63 68 61 72 20 62 65 67 29 20 28 70 75 73 68 2d 6d 61 72 6b 29 20 28 67 6f 74 6f 2d 63 68 61 -char.beg).(push-mark).(goto-cha
18660 72 20 65 6e 64 29 20 28 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 29 29 0a 0a 28 64 65 66 75 6e r.end).(activate-mark)))..(defun
18680 20 67 70 74 65 6c 2d 2d 70 72 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 20 28 26 6f 70 74 69 6f .gptel--previous-variant.(&optio
186a0 6e 61 6c 20 61 72 67 29 0a 20 20 22 53 77 69 74 63 68 20 74 6f 20 70 72 65 76 69 6f 75 73 20 67 nal.arg)..."Switch.to.previous.g
186c0 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 69 66 20 ptel-response.at.this.point,.if.
186e0 69 74 20 65 78 69 73 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a it.exists."...(interactive."p").
18700 20 20 28 70 63 61 73 65 2d 6c 65 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 ..(pcase-let*.((`(,beg...,end).(
18720 67 70 74 65 6c 2d 2d 67 65 74 2d 62 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 gptel--get-bounds)).............
18740 20 20 20 28 68 69 73 74 6f 72 79 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 ...(history.(get-char-property.(
18760 70 6f 69 6e 74 29 20 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 point).'gptel-history)).........
18780 20 20 20 20 20 20 20 28 61 6c 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 61 72 2d 73 61 66 65 20 68 .......(alt-response.(car-safe.h
187a0 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 66 66 73 65 74 29 istory))................(offset)
187c0 29 0a 20 20 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 68 69 73 74 6f 72 79 20 61 6c 74 2d 72 ).....(unless.(and.history.alt-r
187e0 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 4e 6f 20 76 esponse).......(user-error."No.v
18800 61 72 69 61 6e 74 20 72 65 73 70 6f 6e 73 65 73 20 61 76 61 69 6c 61 62 6c 65 22 29 29 0a 20 20 ariant.responses.available"))...
18820 20 20 28 69 66 20 28 3e 20 61 72 67 20 30 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 69 ..(if.(>.arg.0).........(setq.hi
18840 73 74 6f 72 79 20 28 61 70 70 65 6e 64 20 28 63 64 72 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 story.(append.(cdr.history).....
18860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 ..........................(list.
18880 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 (buffer-substring-no-properties.
188a0 62 65 67 20 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 0a 20 20 20 20 20 20 20 61 beg.end)))).......(setq........a
188c0 6c 74 2d 72 65 73 70 6f 6e 73 65 20 28 63 61 72 20 28 6c 61 73 74 20 68 69 73 74 6f 72 79 29 29 lt-response.(car.(last.history))
188e0 0a 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 20 28 63 6f 6e 73 20 28 62 75 66 66 65 72 2d 73 75 ........history.(cons.(buffer-su
18900 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 62 65 67 20 65 6e 64 29 0a 20 bstring-no-properties.beg.end)..
18920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 62 75 74 6c 61 73 74 20 68 69 ....................(nbutlast.hi
18940 73 74 6f 72 79 29 29 29 29 0a 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 story)))).....(add-text-properti
18960 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 28 6c 65 6e 67 74 68 20 61 6c 74 2d 72 65 es..............0.(length.alt-re
18980 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 67 70 74 65 6c 20 72 65 73 sponse)..............`(gptel.res
189a0 70 6f 6e 73 65 20 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 20 2c 68 69 73 74 6f 72 79 29 0a 20 20 ponse.gptel-history.,history)...
189c0 20 20 20 20 20 20 20 20 20 20 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 28 73 65 ...........alt-response).....(se
189e0 74 71 20 6f 66 66 73 65 74 20 28 6d 69 6e 20 28 2d 20 28 70 6f 69 6e 74 29 20 62 65 67 29 20 28 tq.offset.(min.(-.(point).beg).(
18a00 31 2d 20 28 6c 65 6e 67 74 68 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 29 29 29 0a 20 20 20 20 1-.(length.alt-response)))).....
18a20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 28 69 6e 73 (delete-region.beg.end).....(ins
18a40 65 72 74 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 ert.alt-response).....(goto-char
18a60 20 28 2b 20 62 65 67 20 6f 66 66 73 65 74 29 29 0a 20 20 20 20 28 70 75 6c 73 65 2d 6d 6f 6d 65 .(+.beg.offset)).....(pulse-mome
18a80 6e 74 61 72 79 2d 68 69 67 68 6c 69 67 68 74 2d 72 65 67 69 6f 6e 20 62 65 67 20 28 2b 20 62 65 ntary-highlight-region.beg.(+.be
18aa0 67 20 28 6c 65 6e 67 74 68 20 61 6c 74 2d 72 65 73 70 6f 6e 73 65 29 29 29 29 29 0a 0a 28 64 65 g.(length.alt-response)))))..(de
18ac0 66 75 6e 20 67 70 74 65 6c 2d 2d 6e 65 78 74 2d 76 61 72 69 61 6e 74 20 28 26 6f 70 74 69 6f 6e fun.gptel--next-variant.(&option
18ae0 61 6c 20 61 72 67 29 0a 20 20 22 53 77 69 74 63 68 20 74 6f 20 6e 65 78 74 20 67 70 74 65 6c 2d al.arg)..."Switch.to.next.gptel-
18b00 72 65 73 70 6f 6e 73 65 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 69 66 20 69 74 20 65 78 response.at.this.point,.if.it.ex
18b20 69 73 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 70 22 29 0a 20 20 28 67 70 ists."...(interactive."p")...(gp
18b40 74 65 6c 2d 2d 70 72 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 20 28 2d 20 61 72 67 29 29 29 0a tel--previous-variant.(-.arg))).
18b60 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 29 0a 3b 3b 3b 20 67 70 74 65 6c 2e 65 6c 20 65 .(provide.'gptel).;;;.gptel.el.e
18b80 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 nds.here........................
18ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c00 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 74 72 61 6e 73 69 gptel-20240424.2306/gptel-transi
18c20 65 6e 74 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ent.el..........................
18c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18c60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
18c80 30 31 31 30 30 32 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 35 35 36 00 20 30 00 00 00 0110022.00000000000.015556..0...
18ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18d00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
18d20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
18d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
18e00 3b 3b 3b 20 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 65 6c 20 2d 2d 2d 20 54 72 61 6e 73 ;;;.gptel-transient.el.---.Trans
18e20 69 65 6e 74 20 6d 65 6e 75 20 66 6f 72 20 47 50 54 65 6c 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c ient.menu.for.GPTel..-*-.lexical
18e40 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 -binding:.t;.-*-..;;.Copyright.(
18e60 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2023..Karthik.Chikmagalur..;;
18e80 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 .Author:.Karthik.Chikmagalur.<ka
18ea0 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4b rthikchikmagalur@gmail.com>.;;.K
18ec0 65 79 77 6f 72 64 73 3a 20 63 6f 6e 76 65 6e 69 65 6e 63 65 0a 0a 3b 3b 20 53 50 44 58 2d 4c 69 eywords:.convenience..;;.SPDX-Li
18ee0 63 65 6e 73 65 2d 49 64 65 6e 74 69 66 69 65 72 3a 20 47 50 4c 2d 33 2e 30 2d 6f 72 2d 6c 61 74 cense-Identifier:.GPL-3.0-or-lat
18f00 65 72 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 er..;;.This.program.is.free.soft
18f20 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e ware;.you.can.redistribute.it.an
18f40 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d d/or.modify.;;.it.under.the.term
18f60 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 s.of.the.GNU.General.Public.Lice
18f80 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 nse.as.published.by.;;.the.Free.
18fa0 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 Software.Foundation,.either.vers
18fc0 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 ion.3.of.the.License,.or.;;.(at.
18fe0 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a your.option).any.later.version..
19000 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 .;;.This.program.is.distributed.
19020 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 in.the.hope.that.it.will.be.usef
19040 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b ul,.;;.but.WITHOUT.ANY.WARRANTY;
19060 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e .without.even.the.implied.warran
19080 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e ty.of.;;.MERCHANTABILITY.or.FITN
190a0 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 ESS.FOR.A.PARTICULAR.PURPOSE...S
190c0 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 ee.the.;;.GNU.General.Public.Lic
190e0 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 ense.for.more.details...;;.You.s
19100 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 hould.have.received.a.copy.of.th
19120 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 e.GNU.General.Public.License.;;.
19140 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 along.with.this.program...If.not
19160 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e ,.see.<https://www.gnu.org/licen
19180 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 0a 0a 3b 3b 3b ses/>...;;;.Commentary:..;;..;;;
191a0 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 0a 28 72 65 71 75 69 72 .Code:.(require.'cl-lib).(requir
191c0 65 20 27 67 70 74 65 6c 29 0a 28 72 65 71 75 69 72 65 20 27 74 72 61 6e 73 69 65 6e 74 29 0a 0a e.'gptel).(require.'transient)..
191e0 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d (declare-function.ediff-regions-
19200 69 6e 74 65 72 6e 61 6c 20 22 65 64 69 66 66 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 internal."ediff").(declare-funct
19220 69 6f 6e 20 65 64 69 66 66 2d 6d 61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 66 65 72 20 22 65 64 ion.ediff-make-cloned-buffer."ed
19240 69 66 66 2d 75 74 69 6c 73 22 29 0a 0a 0c 0a 3b 3b 20 2a 20 48 65 6c 70 65 72 20 66 75 6e 63 74 iff-utils")....;;.*.Helper.funct
19260 69 6f 6e 73 20 61 6e 64 20 76 61 72 73 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 73 65 ions.and.vars..(defvar.gptel--se
19280 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 20 6e 69 6c 0a 20 20 22 53 65 74 20 6d 6f 64 65 t-buffer-locally.nil..."Set.mode
192a0 6c 20 70 61 72 61 6d 65 74 65 72 73 20 66 72 6f 6d 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 20 62 l.parameters.from.`gptel-menu'.b
192c0 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 2e 0a 0a 41 66 66 65 63 74 73 20 74 68 65 20 73 79 73 74 uffer-locally...Affects.the.syst
192e0 65 6d 20 6d 65 73 73 61 67 65 20 74 6f 6f 2e 22 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d em.message.too.")..(defun.gptel-
19300 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 28 73 79 6d 20 76 61 6c 75 65 20 26 6f 70 74 69 -set-with-scope.(sym.value.&opti
19320 6f 6e 61 6c 20 73 63 6f 70 65 29 0a 20 20 22 53 65 74 20 53 59 4d 42 4f 4c 27 73 20 73 79 6d 62 onal.scope)..."Set.SYMBOL's.symb
19340 6f 6c 2d 76 61 6c 75 65 20 74 6f 20 56 41 4c 55 45 20 77 69 74 68 20 53 43 4f 50 45 2e 0a 0a 49 ol-value.to.VALUE.with.SCOPE...I
19360 66 20 53 43 4f 50 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 73 65 74 20 69 74 20 62 75 66 66 65 f.SCOPE.is.non-nil,.set.it.buffe
19380 72 2d 6c 6f 63 61 6c 6c 79 2c 20 65 6c 73 65 20 63 6c 65 61 72 20 61 6e 79 0a 62 75 66 66 65 72 r-locally,.else.clear.any.buffer
193a0 2d 6c 6f 63 61 6c 20 76 61 6c 75 65 20 61 6e 64 20 73 65 74 20 69 74 73 20 64 65 66 61 75 6c 74 -local.value.and.set.its.default
193c0 20 67 6c 6f 62 61 6c 20 76 61 6c 75 65 2e 22 0a 20 20 28 69 66 20 73 63 6f 70 65 0a 20 20 20 20 .global.value."...(if.scope.....
193e0 20 20 28 73 65 74 20 28 6d 61 6b 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 73 79 6d 29 ..(set.(make-local-variable.sym)
19400 20 76 61 6c 75 65 29 0a 20 20 20 20 28 6b 69 6c 6c 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 .value).....(kill-local-variable
19420 20 73 79 6d 29 0a 20 20 20 20 28 73 65 74 20 73 79 6d 20 76 61 6c 75 65 29 29 29 0a 0a 28 64 65 .sym).....(set.sym.value)))..(de
19440 66 75 6e 20 67 70 74 65 6c 2d 2d 67 65 74 2d 64 69 72 65 63 74 69 76 65 20 28 61 72 67 73 29 0a fun.gptel--get-directive.(args).
19460 20 20 22 46 69 6e 64 20 74 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 76 65 .."Find.the.additional.directive
19480 20 69 6e 20 74 68 65 20 74 72 61 6e 73 69 65 6e 74 20 41 52 47 53 2e 0a 0a 4d 65 61 6e 74 20 74 .in.the.transient.ARGS...Meant.t
194a0 6f 20 62 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 20 69 73 o.be.called.when.`gptel-menu'.is
194c0 20 61 63 74 69 76 65 2e 22 0a 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 6d 62 64 61 20 28 73 29 .active."...(cl-some.(lambda.(s)
194e0 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29 20 28 73 74 72 69 6e 67 2d 70 72 65 66 69 78 .(and.(stringp.s).(string-prefix
19500 2d 70 20 22 3a 22 20 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -p.":".s).......................
19520 20 28 63 6f 6e 63 61 74 20 22 5c 6e 5c 6e 22 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 31 29 29 .(concat."\n\n".(substring.s.1))
19540 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 29 29 0a 0a 28 64 65 ))...................args))..(de
19560 66 75 6e 20 67 70 74 65 6c 2d 2d 69 6e 73 74 72 75 63 74 69 6f 6e 73 2d 6d 61 6b 65 2d 6f 76 65 fun.gptel--instructions-make-ove
19580 72 6c 61 79 20 28 74 65 78 74 20 26 6f 70 74 69 6f 6e 61 6c 20 6f 76 29 0a 20 20 22 54 4f 44 4f rlay.(text.&optional.ov)..."TODO
195a0 22 0a 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 "...(save-excursion.....(cond...
195c0 20 20 20 28 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 72 ...((use-region-p).(goto-char.(r
195e0 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 29 29 0a 20 20 20 20 20 28 28 67 70 74 65 6c 2d egion-beginning)))......((gptel-
19600 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29 20 28 67 70 74 65 6c 2d 62 65 67 69 6e 6e 69 6e 67 -in-response-p).(gptel-beginning
19620 2d 6f 66 2d 72 65 73 70 6f 6e 73 65 29 29 0a 20 20 20 20 20 28 74 20 28 74 65 78 74 2d 70 72 6f -of-response))......(t.(text-pro
19640 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 20 27 67 70 74 65 6c 20 27 72 65 perty-search-backward.'gptel.'re
19660 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 sponse))).....(skip-chars-forwar
19680 64 20 22 5c 6e 20 5c 74 22 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 6f 76 20 28 6f 76 65 72 d."\n.\t").....(if.(and.ov.(over
196a0 6c 61 79 70 20 6f 76 29 29 0a 20 20 20 20 20 20 20 20 28 6d 6f 76 65 2d 6f 76 65 72 6c 61 79 20 layp.ov)).........(move-overlay.
196c0 6f 76 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 29 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 ov.(point).(point).(current-buff
196e0 65 72 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 76 20 28 6d 61 6b 65 2d 6f 76 65 72 6c 61 er)).......(setq.ov.(make-overla
19700 79 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 29 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 28 y.(point).(point).nil.t))).....(
19720 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e 67 20 6e 69 overlay-put.ov.'before-string.ni
19740 6c 29 0a 20 20 20 20 3b 3b 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 28 62 6f 62 70 29 20 28 65 71 l).....;;.(unless.(or.(bobp).(eq
19760 20 28 63 68 61 72 2d 62 65 66 6f 72 65 29 20 22 5c 6e 22 29 29 0a 20 20 20 20 3b 3b 20 20 20 28 .(char-before)."\n")).....;;...(
19780 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 62 65 66 6f 72 65 2d 73 74 72 69 6e 67 20 28 70 overlay-put.ov.'before-string.(p
197a0 72 6f 70 65 72 74 69 7a 65 20 22 5c 6e 22 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 61 63 65 20 27 ropertize."\n".'font-lock-face.'
197c0 73 68 61 64 6f 77 29 29 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 20 6f 76 20 27 63 shadow))).....(overlay-put.ov.'c
197e0 61 74 65 67 6f 72 79 20 27 67 70 74 65 6c 29 0a 20 20 20 20 28 6f 76 65 72 6c 61 79 2d 70 75 74 ategory.'gptel).....(overlay-put
19800 0a 20 20 20 20 20 6f 76 20 27 61 66 74 65 72 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 28 63 6f 6e ......ov.'after-string......(con
19820 63 61 74 0a 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 20 22 47 cat.......(propertize.(concat."G
19840 50 54 45 4c 3a 20 22 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 PTEL:.".text)...................
19860 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 61 63 65 20 27 28 3a 69 6e 68 65 72 69 74 20 73 68 61 64 6f 'font-lock-face.'(:inherit.shado
19880 77 20 3a 62 6f 78 20 74 29 29 0a 20 20 20 20 20 20 22 5c 6e 22 29 29 0a 20 20 20 20 6f 76 29 29 w.:box.t))......."\n")).....ov))
198a0 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 64 2d 76 ..(defun.gptel--transient-read-v
198c0 61 72 69 61 62 6c 65 20 28 70 72 6f 6d 70 74 20 69 6e 69 74 69 61 6c 2d 69 6e 70 75 74 20 68 69 ariable.(prompt.initial-input.hi
198e0 73 74 6f 72 79 29 0a 20 20 22 52 65 61 64 20 76 61 6c 75 65 20 66 72 6f 6d 20 6d 69 6e 69 62 75 story)..."Read.value.from.minibu
19900 66 66 65 72 20 61 6e 64 20 69 6e 74 65 72 70 72 65 74 20 74 68 65 20 72 65 73 75 6c 74 20 61 73 ffer.and.interpret.the.result.as
19920 20 61 20 4c 69 73 70 20 6f 62 6a 65 63 74 2e 0a 0a 50 52 4f 4d 50 54 2c 20 49 4e 49 54 49 41 4c .a.Lisp.object...PROMPT,.INITIAL
19940 2d 49 4e 50 55 54 20 61 6e 64 20 48 49 53 54 4f 52 59 20 61 72 65 20 61 73 20 69 6e 20 74 68 65 -INPUT.and.HISTORY.are.as.in.the
19960 20 54 72 61 6e 73 69 65 6e 74 20 72 65 61 64 65 72 0a 64 6f 63 75 6d 65 6e 74 69 6f 6e 2e 22 0a .Transient.reader.documention.".
19980 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 0a 20 20 20 20 28 72 65 61 64 2d 66 72 6f 6d 2d ..(ignore-errors.....(read-from-
199a0 6d 69 6e 69 62 75 66 66 65 72 20 70 72 6f 6d 70 74 20 69 6e 69 74 69 61 6c 2d 69 6e 70 75 74 20 minibuffer.prompt.initial-input.
199c0 72 65 61 64 2d 65 78 70 72 65 73 73 69 6f 6e 2d 6d 61 70 20 74 20 68 69 73 74 6f 72 79 29 29 29 read-expression-map.t.history)))
199e0 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 66 61 63 74 6f 72 2d 6f 72 2d 72 65 77 72 ..(defun.gptel--refactor-or-rewr
19a00 69 74 65 20 28 29 0a 20 20 22 52 65 77 72 69 74 65 20 73 68 6f 75 6c 64 20 62 65 20 72 65 66 61 ite.()..."Rewrite.should.be.refa
19a20 63 74 6f 72 65 64 20 69 6e 74 6f 20 72 65 66 61 63 74 6f 72 2e 0a 0a 4f 72 20 69 73 20 69 74 20 ctored.into.refactor...Or.is.it.
19a40 74 68 65 20 6f 74 68 65 72 20 77 61 79 20 61 72 6f 75 6e 64 3f 22 0a 20 20 28 69 66 20 28 64 65 the.other.way.around?"...(if.(de
19a60 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 70 72 6f 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 22 rived-mode-p.'prog-mode)......."
19a80 52 65 66 61 63 74 6f 72 22 20 22 52 65 77 72 69 74 65 22 29 29 0a 0a 28 64 65 66 76 61 72 2d 6c Refactor"."Rewrite"))..(defvar-l
19aa0 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 6e 69 6c 29 ocal.gptel--rewrite-message.nil)
19ac0 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 28 .(defun.gptel--rewrite-message.(
19ae0 29 0a 20 20 22 53 65 74 20 61 20 67 65 6e 65 72 69 63 20 72 65 66 61 63 74 6f 72 2f 72 65 77 72 )..."Set.a.generic.refactor/rewr
19b00 69 74 65 20 6d 65 73 73 61 67 65 20 66 6f 72 20 74 68 65 20 62 75 66 66 65 72 2e 22 0a 20 20 28 ite.message.for.the.buffer."...(
19b20 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 70 72 6f 67 2d 6d 6f 64 65 29 0a 20 if.(derived-mode-p.'prog-mode)..
19b40 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 59 6f 75 20 61 72 65 20 61 20 25 73 20 70 72 6f 67 72 .....(format."You.are.a.%s.progr
19b60 61 6d 6d 65 72 2e 20 52 65 66 61 63 74 6f 72 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f ammer..Refactor.the.following.co
19b80 64 65 2e 20 47 65 6e 65 72 61 74 65 20 6f 6e 6c 79 20 63 6f 64 65 2c 20 6e 6f 20 65 78 70 6c 61 de..Generate.only.code,.no.expla
19ba0 6e 61 74 69 6f 6e 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 65 61 64 2d 6c nation."...............(thread-l
19bc0 61 73 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6d 61 6a 6f 72 2d 6d 6f 64 65 29 0a 20 20 20 ast.(symbol-name.major-mode)....
19be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d ........................(string-
19c00 72 65 6d 6f 76 65 2d 73 75 66 66 69 78 20 22 2d 6d 6f 64 65 22 29 0a 20 20 20 20 20 20 20 20 20 remove-suffix."-mode")..........
19c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 6d 6f 76 65 ..................(string-remove
19c40 2d 73 75 66 66 69 78 20 22 2d 74 73 22 29 29 29 0a 20 20 20 20 28 66 6f 72 6d 61 74 20 22 59 6f -suffix."-ts"))).....(format."Yo
19c60 75 20 61 72 65 20 61 20 70 72 6f 73 65 20 65 64 69 74 6f 72 2e 20 52 65 77 72 69 74 65 20 74 68 u.are.a.prose.editor..Rewrite.th
19c80 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 65 78 74 20 74 6f 20 62 65 20 6d 6f 72 65 20 70 72 6f 66 e.following.text.to.be.more.prof
19ca0 65 73 73 69 6f 6e 61 6c 2e 22 29 29 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 63 72 essional.")))..(defvar.gptel--cr
19cc0 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 75 72 6c 0a 20 20 22 68 74 74 70 73 3a owdsourced-prompts-url..."https:
19ce0 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 66 2f 61 77 65 73 6f 6d 65 2d 63 68 61 74 67 70 74 2d 70 //github.com/f/awesome-chatgpt-p
19d00 72 6f 6d 70 74 73 2f 72 61 77 2f 6d 61 69 6e 2f 70 72 6f 6d 70 74 73 2e 63 73 76 22 0a 20 20 22 rompts/raw/main/prompts.csv"..."
19d20 55 52 4c 20 66 6f 72 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 4c 4c 4d 20 73 79 73 74 65 6d 20 URL.for.crowdsourced.LLM.system.
19d40 70 72 6f 6d 70 74 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 prompts.")..(defvar.gptel--crowd
19d60 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 0a 20 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 sourced-prompts...(make-hash-tab
19d80 6c 65 20 3a 74 65 73 74 20 23 27 65 71 75 61 6c 29 0a 20 20 22 43 72 6f 77 64 73 6f 75 72 63 65 le.:test.#'equal)..."Crowdsource
19da0 64 20 4c 4c 4d 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 d.LLM.system.prompts.")..(defun.
19dc0 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 20 28 29 0a 20 gptel--crowdsourced-prompts.()..
19de0 20 22 41 63 71 75 69 72 65 20 61 6e 64 20 72 65 61 64 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 ."Acquire.and.read.crowdsourced.
19e00 4c 4c 4d 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 2e 0a 0a 54 68 65 73 65 20 61 72 65 20 73 LLM.system.prompts...These.are.s
19e20 74 6f 72 65 64 20 69 6e 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 67 70 74 65 6c 2d 2d 63 72 tored.in.the.variable.`gptel--cr
19e40 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 27 2c 0a 77 68 69 63 68 20 73 65 65 2e 22 owdsourced-prompts',.which.see."
19e60 0a 20 20 28 77 68 65 6e 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 70 20 67 70 74 65 6c 2d 2d 63 72 ...(when.(hash-table-p.gptel--cr
19e80 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 28 77 68 65 6e 20 28 68 owdsourced-prompts).....(when.(h
19ea0 61 73 68 2d 74 61 62 6c 65 2d 65 6d 70 74 79 2d 70 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f ash-table-empty-p.gptel--crowdso
19ec0 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 67 70 74 urced-prompts).......(unless.gpt
19ee0 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 0a 20 20 20 el-crowdsourced-prompts-file....
19f00 20 20 20 20 20 28 72 75 6e 2d 61 74 2d 74 69 6d 65 20 30 20 6e 69 6c 20 23 27 67 70 74 65 6c 2d .....(run-at-time.0.nil.#'gptel-
19f20 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 system-prompt).........(user-err
19f40 6f 72 20 22 4e 6f 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 70 72 6f 6d 70 74 73 20 61 76 61 69 or."No.crowdsourced.prompts.avai
19f60 6c 61 62 6c 65 22 29 29 0a 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 61 6e 64 20 28 66 69 6c lable")).......(unless.(and.(fil
19f80 65 2d 65 78 69 73 74 73 2d 70 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 e-exists-p.gptel-crowdsourced-pr
19fa0 6f 6d 70 74 73 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ompts-file)....................(
19fc0 74 69 6d 65 2d 6c 65 73 73 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 time-less-p.....................
19fe0 28 74 69 6d 65 2d 73 75 62 74 72 61 63 74 20 28 63 75 72 72 65 6e 74 2d 74 69 6d 65 29 20 28 64 (time-subtract.(current-time).(d
1a000 61 79 73 2d 74 6f 2d 74 69 6d 65 20 31 34 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ays-to-time.14))................
1a020 20 20 20 20 20 28 66 69 6c 65 2d 61 74 74 72 69 62 75 74 65 2d 6d 6f 64 69 66 69 63 61 74 69 6f .....(file-attribute-modificatio
1a040 6e 2d 74 69 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6c n-time......................(fil
1a060 65 2d 61 74 74 72 69 62 75 74 65 73 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d e-attributes.gptel-crowdsourced-
1a080 70 72 6f 6d 70 74 73 2d 66 69 6c 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 prompts-file)))).........(when.(
1a0a0 79 2d 6f 72 2d 6e 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a y-or-n-p................(concat.
1a0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46 65 74 63 68 20 63 72 6f 77 64 73 6f 75 72 ................"Fetch.crowdsour
1a0e0 63 65 64 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 73 20 66 72 6f 6d 20 22 0a 20 20 20 20 20 20 ced.system.prompts.from.".......
1a100 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 68 74 74 70 73 3a 2f 2f 67 ..........(propertize."https://g
1a120 69 74 68 75 62 2e 63 6f 6d 2f 66 2f 61 77 65 73 6f 6d 65 2d 63 68 61 74 67 70 74 2d 70 72 6f 6d ithub.com/f/awesome-chatgpt-prom
1a140 70 74 73 22 20 27 66 61 63 65 20 27 6c 69 6e 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pts".'face.'link)...............
1a160 20 20 22 3f 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 65 74 63 68 20 66 69 6c 65 0a .."?"))...........;;.Fetch.file.
1a180 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 46 65 74 63 68 69 6e 67 20 70 72 6f ..........(message."Fetching.pro
1a1a0 6d 70 74 73 2e 2e 2e 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 69 72 20 28 mpts...")...........(let.((dir.(
1a1c0 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 file-name-directory.gptel-crowds
1a1e0 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 ourced-prompts-file)))..........
1a200 20 20 20 28 75 6e 6c 65 73 73 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 64 69 72 29 20 28 ...(unless.(file-exists-p.dir).(
1a220 6d 6b 64 69 72 20 64 69 72 20 27 63 72 65 61 74 65 2d 70 61 72 65 6e 74 73 29 29 0a 20 20 20 20 mkdir.dir.'create-parents)).....
1a240 20 20 20 20 20 20 20 20 28 69 66 20 28 75 72 6c 2d 63 6f 70 79 2d 66 69 6c 65 20 67 70 74 65 6c ........(if.(url-copy-file.gptel
1a260 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 75 72 6c 0a 20 20 20 20 20 --crowdsourced-prompts-url......
1a280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d ..........................gptel-
1a2a0 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 0a 20 20 20 20 20 20 crowdsourced-prompts-file.......
1a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6f 6b 2d 69 66 2d .........................'ok-if-
1a2e0 61 6c 72 65 61 64 79 2d 65 78 69 73 74 73 29 0a 09 09 28 6d 65 73 73 61 67 65 20 22 46 65 74 63 already-exists)...(message."Fetc
1a300 68 69 6e 67 20 70 72 6f 6d 70 74 73 2e 2e 2e 20 64 6f 6e 65 2e 22 29 0a 20 20 20 20 20 20 20 20 hing.prompts....done.").........
1a320 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 74 72 69 65 ......(message."Could.not.retrie
1a340 76 65 20 6e 65 77 20 70 72 6f 6d 70 74 73 2e 22 29 29 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 ve.new.prompts."))))).......(if.
1a360 28 6e 6f 74 20 28 66 69 6c 65 2d 72 65 61 64 61 62 6c 65 2d 70 20 67 70 74 65 6c 2d 63 72 6f 77 (not.(file-readable-p.gptel-crow
1a380 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 dsourced-prompts-file)).........
1a3a0 20 20 28 70 72 6f 67 6e 20 28 6d 65 73 73 61 67 65 20 22 4e 6f 20 63 72 6f 77 64 73 6f 75 72 63 ..(progn.(message."No.crowdsourc
1a3c0 65 64 20 70 72 6f 6d 70 74 73 20 61 76 61 69 6c 61 62 6c 65 22 29 0a 20 20 20 20 20 20 20 20 20 ed.prompts.available")..........
1a3e0 20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 ........(call-interactively.#'gp
1a400 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 tel-system-prompt)).........(wit
1a420 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 2d h-temp-buffer...........(insert-
1a440 66 69 6c 65 2d 63 6f 6e 74 65 6e 74 73 20 67 70 74 65 6c 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 file-contents.gptel-crowdsourced
1a460 2d 70 72 6f 6d 70 74 73 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 -prompts-file)...........(goto-c
1a480 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 har.(point-min))...........(forw
1a4a0 61 72 64 2d 6c 69 6e 65 20 31 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 6e 6f ard-line.1)...........(while.(no
1a4c0 74 20 28 65 6f 62 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 t.(eobp)).............(when-let.
1a4e0 28 28 61 63 74 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 0a ((act.(read.(current-buffer)))).
1a500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 ..............(forward-char)....
1a520 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 ...........(save-excursion......
1a540 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 ...........(while.(re-search-for
1a560 77 61 72 64 20 22 5c 22 5c 22 22 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 20 ward."\"\"".(line-end-position).
1a580 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 t)...................(replace-ma
1a5a0 74 63 68 20 22 5c 5c 5c 5c 5c 22 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 tch."\\\\\"")))...............(w
1a5c0 68 65 6e 2d 6c 65 74 20 28 28 70 72 6f 6d 70 74 20 28 72 65 61 64 20 28 63 75 72 72 65 6e 74 2d hen-let.((prompt.(read.(current-
1a5e0 62 75 66 66 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 74 68 buffer)))).................(puth
1a600 61 73 68 20 61 63 74 20 70 72 6f 6d 70 74 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 ash.act.prompt.gptel--crowdsourc
1a620 65 64 2d 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 ed-prompts))).............(forwa
1a640 72 64 2d 6c 69 6e 65 20 31 29 29 29 29 29 0a 20 20 20 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 rd-line.1))))).....gptel--crowds
1a660 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 ourced-prompts))....;;.*.Transie
1a680 6e 74 20 63 6c 61 73 73 65 73 20 61 6e 64 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 67 70 74 65 6c nt.classes.and.methods.for.gptel
1a6a0 0a 0a 28 64 65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 20 28 74 72 61 ..(defclass.gptel--switches.(tra
1a6c0 6e 73 69 65 6e 74 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 0a 20 20 28 28 64 69 73 70 6c 61 nsient-lisp-variable)...((displa
1a6e0 79 2d 69 66 2d 74 72 75 65 20 3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 69 66 2d 74 y-if-true.:initarg.:display-if-t
1a700 72 75 65 20 3a 69 6e 69 74 66 6f 72 6d 20 22 66 6f 72 20 74 68 69 73 20 62 75 66 66 65 72 22 29 rue.:initform."for.this.buffer")
1a720 0a 20 20 20 28 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 3a 69 6e 69 74 61 72 67 20 3a ....(display-if-false.:initarg.:
1a740 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 20 3a 69 6e 69 74 66 6f 72 6d 20 22 67 6c 6f 62 display-if-false.:initform."glob
1a760 61 6c 6c 79 22 29 29 0a 20 20 22 42 6f 6f 6c 65 61 6e 20 6c 69 73 70 20 76 61 72 69 61 62 6c 65 ally"))..."Boolean.lisp.variable
1a780 20 63 6c 61 73 73 20 66 6f 72 20 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 22 29 0a 0a 28 .class.for.gptel-transient.")..(
1a7a0 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 72 65 61 cl-defmethod.transient-infix-rea
1a7c0 64 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 65 73 29 29 0a 20 20 22 43 79 63 d.((obj.gptel--switches))..."Cyc
1a7e0 6c 65 20 74 68 72 6f 75 67 68 20 74 68 65 20 6d 75 74 75 61 6c 6c 79 20 65 78 63 6c 75 73 69 76 le.through.the.mutually.exclusiv
1a800 65 20 73 77 69 74 63 68 65 73 2e 22 0a 20 20 28 6e 6f 74 20 28 6f 72 65 66 20 6f 62 6a 20 76 61 e.switches."...(not.(oref.obj.va
1a820 6c 75 65 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d lue)))..(cl-defmethod.transient-
1a840 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 2d 73 77 69 74 63 68 format-value.((obj.gptel--switch
1a860 65 73 29 29 0a 20 20 28 77 69 74 68 2d 73 6c 6f 74 73 20 28 76 61 6c 75 65 20 64 69 73 70 6c 61 es))...(with-slots.(value.displa
1a880 79 2d 69 66 2d 74 72 75 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 29 20 6f 62 6a 0a y-if-true.display-if-false).obj.
1a8a0 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 ......(format........(propertize
1a8c0 20 22 28 25 73 29 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 64 65 6c 69 6d 69 74 ."(%s)".'face.'transient-delimit
1a8e0 65 72 29 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 er)........(concat.........(prop
1a900 65 72 74 69 7a 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 66 61 6c 73 65 0a 20 20 20 20 20 20 20 20 ertize.display-if-false.........
1a920 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 28 69 66 20 76 61 6c 75 65 20 27 74 72 61 ............'face.(if.value.'tra
1a940 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 nsient-inactive-value.'transient
1a960 2d 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 7c 22 -value)).........(propertize."|"
1a980 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 64 65 6c 69 6d 69 74 65 72 29 0a 20 20 20 .'face.'transient-delimiter)....
1a9a0 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 64 69 73 70 6c 61 79 2d 69 66 2d 74 72 75 65 .....(propertize.display-if-true
1a9c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 28 69 66 20 76 .....................'face.(if.v
1a9e0 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 20 27 74 72 61 6e 73 69 65 6e 74 alue.'transient-value.'transient
1aa00 2d 69 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 29 29 29 29 29 29 0a 0a 28 64 65 66 63 6c 61 73 73 -inactive-value))))))..(defclass
1aa20 20 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 20 28 74 72 61 6e 73 69 65 6e 74 2d .gptel-lisp-variable.(transient-
1aa40 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 0a 20 20 28 28 64 69 73 70 6c 61 79 2d 6e 69 6c 20 3a lisp-variable)...((display-nil.:
1aa60 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 29 29 0a 20 20 22 4c 69 73 70 20 76 initarg.:display-nil))..."Lisp.v
1aa80 61 72 69 61 62 6c 65 73 20 74 68 61 74 20 73 68 6f 77 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 ariables.that.show.:display-nil.
1aaa0 69 6e 73 74 65 61 64 20 6f 66 20 6e 69 6c 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 instead.of.nil.")..(cl-defmethod
1aac0 20 74 72 61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 0a 20 20 28 28 6f 62 6a 20 .transient-format-value...((obj.
1aae0 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 29 0a 20 20 28 70 72 6f 70 65 72 74 gptel-lisp-variable))...(propert
1ab00 69 7a 65 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 6f 72 20 28 6f 72 65 66 20 6f ize.(prin1-to-string.(or.(oref.o
1ab20 62 6a 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 bj.value).......................
1ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 64 69 73 70 6c 61 79 2d 6e .............(oref.obj.display-n
1ab60 69 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 il)))...............'face.'trans
1ab80 69 65 6e 74 2d 76 61 6c 75 65 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e ient-value))..(cl-defmethod.tran
1aba0 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 6c 69 73 70 sient-infix-set.((obj.gptel-lisp
1abc0 2d 76 61 72 69 61 62 6c 65 29 20 76 61 6c 75 65 29 0a 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 -variable).value)...(funcall.(or
1abe0 65 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 ef.obj.set-value)............(or
1ac00 65 66 20 6f 62 6a 20 76 61 72 69 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 73 65 ef.obj.variable)............(ose
1ac20 74 20 6f 62 6a 20 76 61 6c 75 65 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 67 70 t.obj.value.value)............gp
1ac40 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 0a 0a 28 64 65 66 63 tel--set-buffer-locally))..(defc
1ac60 6c 61 73 73 20 67 70 74 65 6c 2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 20 28 74 72 lass.gptel-provider-variable.(tr
1ac80 61 6e 73 69 65 6e 74 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 29 0a 20 20 28 28 6d 6f 64 65 6c ansient-lisp-variable)...((model
1aca0 20 20 20 20 20 20 20 3a 69 6e 69 74 61 72 67 20 3a 6d 6f 64 65 6c 29 0a 20 20 20 28 6d 6f 64 65 .......:initarg.:model)....(mode
1acc0 6c 2d 76 61 6c 75 65 20 3a 69 6e 69 74 61 72 67 20 3a 6d 6f 64 65 6c 2d 76 61 6c 75 65 29 0a 20 l-value.:initarg.:model-value)..
1ace0 20 20 28 61 6c 77 61 79 73 2d 72 65 61 64 20 3a 69 6e 69 74 66 6f 72 6d 20 74 29 0a 20 20 20 28 ..(always-read.:initform.t)....(
1ad00 73 65 74 2d 76 61 6c 75 65 20 3a 69 6e 69 74 61 72 67 20 3a 73 65 74 2d 76 61 6c 75 65 20 3a 69 set-value.:initarg.:set-value.:i
1ad20 6e 69 74 66 6f 72 6d 20 23 27 73 65 74 29 29 0a 20 20 22 43 6c 61 73 73 20 75 73 65 64 20 66 6f nitform.#'set))..."Class.used.fo
1ad40 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 73 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 r.gptel-backends.")..(cl-defmeth
1ad60 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62 6a 20 od.transient-format-value.((obj.
1ad80 67 70 74 65 6c 2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 29 29 0a 20 20 28 70 72 6f gptel-provider-variable))...(pro
1ada0 70 65 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e pertize.(concat.(gptel-backend-n
1adc0 61 6d 65 20 28 6f 72 65 66 20 6f 62 6a 20 76 61 6c 75 65 29 29 20 22 3a 22 0a 20 20 20 20 20 20 ame.(oref.obj.value)).":".......
1ade0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 ................(buffer-local-va
1ae00 6c 75 65 20 28 6f 72 65 66 20 6f 62 6a 20 6d 6f 64 65 6c 29 20 74 72 61 6e 73 69 65 6e 74 2d 2d lue.(oref.obj.model).transient--
1ae20 6f 72 69 67 69 6e 61 6c 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 original-buffer))...............
1ae40 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29 29 0a 0a 28 63 6c 2d 64 65 'face.'transient-value))..(cl-de
1ae60 66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e 74 2d 69 6e 66 69 78 2d 73 65 74 20 28 28 6f 62 fmethod.transient-infix-set.((ob
1ae80 6a 20 67 70 74 65 6c 2d 70 72 6f 76 69 64 65 72 2d 76 61 72 69 61 62 6c 65 29 20 76 61 6c 75 65 j.gptel-provider-variable).value
1aea0 29 0a 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 62 61 63 6b 65 6e 64 2d 76 61 6c 75 )...(pcase-let.((`(,backend-valu
1aec0 65 20 2c 6d 6f 64 65 6c 2d 76 61 6c 75 65 29 20 76 61 6c 75 65 29 29 0a 20 20 20 20 28 66 75 6e e.,model-value).value)).....(fun
1aee0 63 61 6c 6c 20 28 6f 72 65 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 call.(oref.obj.set-value).......
1af00 20 20 20 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 76 61 72 69 61 62 6c 65 29 0a 20 20 20 20 20 .......(oref.obj.variable)......
1af20 20 20 20 20 20 20 20 20 28 6f 73 65 74 20 6f 62 6a 20 76 61 6c 75 65 20 62 61 63 6b 65 6e 64 2d ........(oset.obj.value.backend-
1af40 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 value)..............gptel--set-b
1af60 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 0a 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 6f 72 65 uffer-locally).....(funcall.(ore
1af80 66 20 6f 62 6a 20 73 65 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f f.obj.set-value)..............(o
1afa0 72 65 66 20 6f 62 6a 20 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 73 65 ref.obj.model)..............(ose
1afc0 74 20 6f 62 6a 20 6d 6f 64 65 6c 2d 76 61 6c 75 65 20 6d 6f 64 65 6c 2d 76 61 6c 75 65 29 0a 20 t.obj.model-value.model-value)..
1afe0 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f ............gptel--set-buffer-lo
1b000 63 61 6c 6c 79 29 29 29 0a 0a 28 64 65 66 63 6c 61 73 73 20 67 70 74 65 6c 2d 6f 70 74 69 6f 6e cally)))..(defclass.gptel-option
1b020 2d 6f 76 65 72 6c 61 69 64 20 28 74 72 61 6e 73 69 65 6e 74 2d 6f 70 74 69 6f 6e 29 0a 20 20 28 -overlaid.(transient-option)...(
1b040 28 64 69 73 70 6c 61 79 2d 6e 69 6c 20 3a 69 6e 69 74 61 72 67 20 3a 64 69 73 70 6c 61 79 2d 6e (display-nil.:initarg.:display-n
1b060 69 6c 29 0a 20 20 20 28 6f 76 65 72 6c 61 79 20 3a 69 6e 69 74 61 72 67 20 3a 6f 76 65 72 6c 61 il)....(overlay.:initarg.:overla
1b080 79 29 29 0a 20 20 22 54 72 61 6e 73 69 65 6e 74 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 6f 76 65 y))..."Transient.options.for.ove
1b0a0 72 6c 61 79 73 20 64 69 73 70 6c 61 79 65 64 20 69 6e 20 74 68 65 20 77 6f 72 6b 69 6e 67 20 62 rlays.displayed.in.the.working.b
1b0c0 75 66 66 65 72 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 74 72 61 6e 73 69 65 6e uffer.")..(cl-defmethod.transien
1b0e0 74 2d 66 6f 72 6d 61 74 2d 76 61 6c 75 65 20 28 28 6f 62 6a 20 67 70 74 65 6c 2d 6f 70 74 69 6f t-format-value.((obj.gptel-optio
1b100 6e 2d 6f 76 65 72 6c 61 69 64 29 29 0a 20 20 22 73 65 74 20 75 70 20 74 68 65 20 69 6e 2d 62 75 n-overlaid))..."set.up.the.in-bu
1b120 66 66 65 72 20 6f 76 65 72 6c 61 79 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 ffer.overlay.for.additional.dire
1b140 63 74 69 76 65 2c 20 61 20 73 74 72 69 6e 67 2e 0a 0a 41 6c 73 6f 20 66 6f 72 6d 61 74 20 69 74 ctive,.a.string...Also.format.it
1b160 73 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20 54 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 2e 22 0a s.value.in.the.Transient.menu.".
1b180 20 20 28 6c 65 74 20 28 28 76 61 6c 75 65 20 28 6f 72 65 66 20 6f 62 6a 20 76 61 6c 75 65 29 29 ..(let.((value.(oref.obj.value))
1b1a0 0a 20 20 20 20 20 20 20 20 28 6f 76 20 20 20 20 28 6f 72 65 66 20 6f 62 6a 20 6f 76 65 72 6c 61 .........(ov....(oref.obj.overla
1b1c0 79 29 29 0a 20 20 20 20 20 20 20 20 28 61 72 67 75 6d 65 6e 74 20 28 6f 72 65 66 20 6f 62 6a 20 y)).........(argument.(oref.obj.
1b1e0 61 72 67 75 6d 65 6e 74 29 29 29 0a 20 20 20 20 3b 3b 20 4d 61 6b 69 6e 67 20 61 6e 20 6f 76 65 argument))).....;;.Making.an.ove
1b200 72 6c 61 79 0a 20 20 20 20 28 69 66 20 28 6f 72 20 28 6e 6f 74 20 76 61 6c 75 65 29 20 28 73 74 rlay.....(if.(or.(not.value).(st
1b220 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 ring-empty-p.value)).........(wh
1b240 65 6e 20 6f 76 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f 76 29 29 0a 20 20 20 20 20 en.ov.(delete-overlay.ov))......
1b260 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 74 72 61 6e 73 69 65 6e 74 2d .(with-current-buffer.transient-
1b280 2d 6f 72 69 67 69 6e 61 6c 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 6f 73 65 74 20 6f -original-buffer.........(oset.o
1b2a0 62 6a 20 6f 76 65 72 6c 61 79 20 28 67 70 74 65 6c 2d 2d 69 6e 73 74 72 75 63 74 69 6f 6e 73 2d bj.overlay.(gptel--instructions-
1b2c0 6d 61 6b 65 2d 6f 76 65 72 6c 61 79 20 76 61 6c 75 65 20 6f 76 29 29 29 0a 20 20 20 20 20 20 28 make-overlay.value.ov))).......(
1b2e0 6c 65 74 72 65 63 20 28 28 6f 76 2d 63 6c 65 61 72 2d 68 6f 6f 6b 0a 20 20 20 20 20 20 20 20 20 letrec.((ov-clear-hook..........
1b300 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 6f .......(lambda.().(when-let*.((o
1b320 76 20 28 6f 72 65 66 20 6f 62 6a 20 6f 76 65 72 6c 61 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 v.(oref.obj.overlay))...........
1b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6f 76 65 72 6c 61 ........................((overla
1b360 79 70 20 6f 76 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 yp.ov)))........................
1b380 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 74 72 61 6e 73 69 65 6e 74 2d 65 78 69 74 2d 68 6f .(remove-hook.'transient-exit-ho
1b3a0 6f 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ok..............................
1b3c0 20 20 20 20 20 20 20 20 6f 76 2d 63 6c 65 61 72 2d 68 6f 6f 6b 29 0a 20 20 20 20 20 20 20 20 20 ........ov-clear-hook)..........
1b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 6f 76 65 72 6c 61 79 20 6f ...............(delete-overlay.o
1b400 76 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 74 72 61 6e 73 69 v))))).........(add-hook.'transi
1b420 65 6e 74 2d 65 78 69 74 2d 68 6f 6f 6b 20 6f 76 2d 63 6c 65 61 72 2d 68 6f 6f 6b 29 29 29 0a 20 ent-exit-hook.ov-clear-hook)))..
1b440 20 20 20 3b 3b 20 55 70 64 61 74 69 6e 67 20 74 72 61 6e 73 69 65 6e 74 20 6d 65 6e 75 20 64 69 ...;;.Updating.transient.menu.di
1b460 73 70 6c 61 79 0a 20 20 20 20 28 69 66 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 28 70 72 6f splay.....(if.value.........(pro
1b480 70 65 72 74 69 7a 65 20 28 63 6f 6e 63 61 74 20 61 72 67 75 6d 65 6e 74 20 28 74 72 75 6e 63 61 pertize.(concat.argument.(trunca
1b4a0 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 76 61 6c 75 65 20 32 35 20 6e 69 6c 20 te-string-to-width.value.25.nil.
1b4c0 6e 69 6c 20 22 2e 2e 2e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nil."...")).....................
1b4e0 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 28 70 'face.'transient-value).......(p
1b500 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 28 22 20 28 73 79 ropertize........(concat."(".(sy
1b520 6d 62 6f 6c 2d 6e 61 6d 65 20 28 6f 72 65 66 20 6f 62 6a 20 64 69 73 70 6c 61 79 2d 6e 69 6c 29 mbol-name.(oref.obj.display-nil)
1b540 29 20 22 29 22 29 0a 20 20 20 20 20 20 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 ).")")........'face.'transient-i
1b560 6e 61 63 74 69 76 65 2d 76 61 6c 75 65 29 29 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 nactive-value))))....;;.*.Transi
1b580 65 6e 74 20 50 72 65 66 69 78 65 73 0a 0a 28 64 65 66 69 6e 65 2d 6f 62 73 6f 6c 65 74 65 2d 66 ent.Prefixes..(define-obsolete-f
1b5a0 75 6e 63 74 69 6f 6e 2d 61 6c 69 61 73 20 27 67 70 74 65 6c 2d 73 65 6e 64 2d 6d 65 6e 75 20 27 unction-alias.'gptel-send-menu.'
1b5c0 67 70 74 65 6c 2d 6d 65 6e 75 20 22 30 2e 33 2e 32 22 29 0a 0a 3b 3b 20 42 55 47 3a 20 54 68 65 gptel-menu."0.3.2")..;;.BUG:.The
1b5e0 20 60 3a 69 6e 63 6f 6d 70 61 74 69 62 6c 65 27 20 73 70 65 63 20 64 6f 65 73 6e 27 74 20 77 6f .`:incompatible'.spec.doesn't.wo
1b600 72 6b 20 69 66 20 74 68 65 72 65 27 73 20 61 20 60 3a 64 65 73 63 72 69 70 74 69 6f 6e 27 20 62 rk.if.there's.a.`:description'.b
1b620 65 6c 6f 77 20 69 74 2e 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 elow.it..;;;###autoload.(autoloa
1b640 64 20 27 67 70 74 65 6c 2d 6d 65 6e 75 20 22 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 22 20 d.'gptel-menu."gptel-transient".
1b660 6e 69 6c 20 74 29 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 70 72 65 66 69 78 20 nil.t).(transient-define-prefix.
1b680 67 70 74 65 6c 2d 6d 65 6e 75 20 28 29 0a 20 20 22 43 68 61 6e 67 65 20 70 61 72 61 6d 65 74 65 gptel-menu.()..."Change.paramete
1b6a0 72 73 20 6f 66 20 70 72 6f 6d 70 74 20 74 6f 20 73 65 6e 64 20 74 6f 20 74 68 65 20 4c 4c 4d 2e rs.of.prompt.to.send.to.the.LLM.
1b6c0 22 0a 20 20 3b 3b 20 3a 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 27 28 28 22 2d 6d 22 20 22 2d 6e "...;;.:incompatible.'(("-m"."-n
1b6e0 22 20 22 2d 6b 22 20 22 2d 65 22 29 29 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 "."-k"."-e"))...[:description...
1b700 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 .(lambda.()......(string-replace
1b720 0a 20 20 20 20 20 20 22 5c 6e 22 20 22 e2 ae 90 20 22 0a 20 20 20 20 20 20 28 74 72 75 6e 63 61 ......."\n"."....".......(trunca
1b740 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 0a 20 20 20 20 20 20 20 67 70 74 65 6c 2d te-string-to-width........gptel-
1b760 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 28 6d 61 78 20 28 2d 20 28 77 69 6e 64 6f 77 2d -system-message.(max.(-.(window-
1b780 77 69 64 74 68 29 20 31 32 29 20 31 34 29 20 6e 69 6c 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 5b width).12).14).nil.nil.t)))....[
1b7a0 22 22 0a 20 20 20 20 22 49 6e 73 74 72 75 63 74 69 6f 6e 73 22 0a 20 20 20 20 28 22 73 22 20 22 ""....."Instructions".....("s"."
1b7c0 53 65 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 20 67 70 74 65 6c 2d 73 79 73 74 65 6d Set.system.message".gptel-system
1b7e0 2d 70 72 6f 6d 70 74 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 20 20 20 20 28 67 70 74 65 6c -prompt.:transient.t).....(gptel
1b800 2d 2d 69 6e 66 69 78 2d 61 64 64 2d 64 69 72 65 63 74 69 76 65 29 5d 5d 0a 20 20 5b 5b 22 4d 6f --infix-add-directive)]]...[["Mo
1b820 64 65 6c 20 50 61 72 61 6d 65 74 65 72 73 22 0a 20 20 20 20 3a 70 61 64 2d 6b 65 79 73 20 74 0a del.Parameters".....:pad-keys.t.
1b840 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 65 ....(gptel--infix-variable-scope
1b860 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 70 72 6f 76 69 64 65 72 29 0a 20 20 ).....(gptel--infix-provider)...
1b880 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a 20 20 20 20 ..(gptel--infix-max-tokens).....
1b8a0 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 (gptel--infix-num-messages-to-se
1b8c0 6e 64 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 74 65 6d 70 65 72 61 74 75 72 nd).....(gptel--infix-temperatur
1b8e0 65 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 6f e.:if.(lambda.().gptel-expert-co
1b900 6d 6d 61 6e 64 73 29 29 5d 0a 20 20 20 5b 22 50 72 6f 6d 70 74 20 66 72 6f 6d 22 0a 20 20 20 20 mmands))]....["Prompt.from".....
1b920 28 22 6d 22 20 22 4d 69 6e 69 62 75 66 66 65 72 20 69 6e 73 74 65 61 64 22 20 22 6d 22 29 0a 20 ("m"."Minibuffer.instead"."m")..
1b940 20 20 20 28 22 79 22 20 22 4b 69 6c 6c 2d 72 69 6e 67 20 69 6e 73 74 65 61 64 22 20 22 79 22 29 ...("y"."Kill-ring.instead"."y")
1b960 0a 20 20 20 20 22 22 0a 20 20 20 20 28 22 69 22 20 22 52 65 73 70 6f 6e 64 20 69 6e 20 70 6c 61 ....."".....("i"."Respond.in.pla
1b980 63 65 22 20 22 69 22 29 5d 0a 20 20 20 20 5b 22 52 65 73 70 6f 6e 73 65 20 74 6f 22 0a 20 20 20 ce"."i")].....["Response.to"....
1b9a0 20 28 22 65 22 20 22 45 63 68 6f 20 61 72 65 61 20 69 6e 73 74 65 61 64 22 20 22 65 22 29 0a 20 .("e"."Echo.area.instead"."e")..
1b9c0 20 20 20 28 22 67 22 20 22 67 70 74 65 6c 20 73 65 73 73 69 6f 6e 22 20 22 67 22 0a 20 20 20 20 ...("g"."gptel.session"."g".....
1b9e0 20 3a 63 6c 61 73 73 20 74 72 61 6e 73 69 65 6e 74 2d 6f 70 74 69 6f 6e 0a 20 20 20 20 20 3a 70 .:class.transient-option......:p
1ba00 72 6f 6d 70 74 20 22 45 78 69 73 74 69 6e 67 20 6f 72 20 6e 65 77 20 67 70 74 65 6c 20 73 65 73 rompt."Existing.or.new.gptel.ses
1ba20 73 69 6f 6e 3a 20 22 0a 20 20 20 20 20 3a 72 65 61 64 65 72 0a 20 20 20 20 20 28 6c 61 6d 62 64 sion:."......:reader......(lambd
1ba40 61 20 28 70 72 6f 6d 70 74 20 5f 20 5f 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 28 72 65 a.(prompt._._history)........(re
1ba60 61 64 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 20 28 67 65 6e 65 72 61 ad-buffer.........prompt.(genera
1ba80 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 te-new-buffer-name..............
1baa0 20 20 20 28 63 6f 6e 63 61 74 20 22 2a 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 ...(concat."*".(gptel-backend-na
1bac0 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 20 22 2a 22 29 29 0a 20 20 20 20 20 20 20 20 me.gptel-backend)."*")).........
1bae0 6e 69 6c 20 28 6c 61 6d 62 64 61 20 28 62 75 66 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 nil.(lambda.(buf-name)..........
1bb00 20 20 20 20 20 28 69 66 20 28 63 6f 6e 73 70 20 62 75 66 2d 6e 61 6d 65 29 20 28 73 65 74 71 20 .....(if.(consp.buf-name).(setq.
1bb20 62 75 66 2d 6e 61 6d 65 20 28 63 61 72 20 62 75 66 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 buf-name.(car.buf-name))).......
1bb40 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 20 28 67 65 74 2d 62 75 66 66 65 72 20 62 ........(let.((buf.(get-buffer.b
1bb60 75 66 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 uf-name))).................(and.
1bb80 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 6d 6f 64 65 20 (buffer-local-value.'gptel-mode.
1bba0 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 buf)......................(not.(
1bbc0 65 71 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 62 75 66 29 29 29 29 29 29 29 29 0a eq.(current-buffer).buf)))))))).
1bbe0 20 20 20 20 28 22 62 22 20 22 41 6e 79 20 62 75 66 66 65 72 22 20 22 62 22 0a 20 20 20 20 20 3a ....("b"."Any.buffer"."b"......:
1bc00 63 6c 61 73 73 20 74 72 61 6e 73 69 65 6e 74 2d 6f 70 74 69 6f 6e 0a 20 20 20 20 20 3a 70 72 6f class.transient-option......:pro
1bc20 6d 70 74 20 22 4f 75 74 70 75 74 20 74 6f 20 62 75 66 66 65 72 3a 20 22 0a 20 20 20 20 20 3a 72 mpt."Output.to.buffer:."......:r
1bc40 65 61 64 65 72 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 5f 20 5f 68 69 eader......(lambda.(prompt._._hi
1bc60 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 28 72 65 61 64 2d 62 75 66 66 65 72 20 70 72 6f 6d 70 story)........(read-buffer.promp
1bc80 74 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 6f 74 68 65 72 2d 62 75 66 66 65 72 29 29 20 6e t.(buffer-name.(other-buffer)).n
1bca0 69 6c 29 29 29 0a 20 20 20 20 28 22 6b 22 20 22 4b 69 6c 6c 2d 72 69 6e 67 22 20 22 6b 22 29 5d il))).....("k"."Kill-ring"."k")]
1bcc0 5d 0a 20 20 5b 5b 22 53 65 6e 64 22 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d ]...[["Send".....(gptel--suffix-
1bce0 73 65 6e 64 29 0a 20 20 20 20 28 22 4d 2d 52 45 54 22 20 22 52 65 67 65 6e 65 72 61 74 65 22 20 send).....("M-RET"."Regenerate".
1bd00 67 70 74 65 6c 2d 2d 72 65 67 65 6e 65 72 61 74 65 20 3a 69 66 20 67 70 74 65 6c 2d 2d 69 6e 2d gptel--regenerate.:if.gptel--in-
1bd20 72 65 73 70 6f 6e 73 65 2d 70 29 5d 0a 20 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 67 70 response-p)]....[:description.gp
1bd40 74 65 6c 2d 2d 72 65 66 61 63 74 6f 72 2d 6f 72 2d 72 65 77 72 69 74 65 0a 20 20 20 20 3a 69 66 tel--refactor-or-rewrite.....:if
1bd60 20 75 73 65 2d 72 65 67 69 6f 6e 2d 70 0a 20 20 20 20 28 22 72 22 0a 20 20 20 20 20 3b 3b 46 49 .use-region-p.....("r"......;;FI
1bd80 58 4d 45 3a 20 54 72 61 6e 73 69 65 6e 74 20 63 6f 6d 70 6c 61 69 6e 73 20 69 66 20 49 20 75 73 XME:.Transient.complains.if.I.us
1bda0 65 20 60 67 70 74 65 6c 2d 2d 72 65 66 61 63 74 6f 72 2d 6f 72 2d 72 65 77 72 69 74 65 27 20 68 e.`gptel--refactor-or-rewrite'.h
1bdc0 65 72 65 2e 20 49 74 0a 20 20 20 20 20 3b 3b 72 65 61 64 73 20 74 68 69 73 20 66 75 6e 63 74 69 ere..It......;;reads.this.functi
1bde0 6f 6e 20 61 73 20 61 20 73 75 66 66 69 78 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 66 75 6e 63 on.as.a.suffix.instead.of.a.func
1be00 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 74 68 65 0a 20 20 20 20 20 3b 3b 64 65 73 tion.that.returns.the......;;des
1be20 63 72 69 70 74 69 6f 6e 2e 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 69 66 20 28 64 cription.......(lambda.().(if.(d
1be40 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 70 72 6f 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 erived-mode-p.'prog-mode).......
1be60 20 20 20 20 20 20 20 20 20 22 52 65 66 61 63 74 6f 72 22 20 22 52 65 77 72 69 74 65 22 29 29 0a ........."Refactor"."Rewrite")).
1be80 20 20 20 20 20 67 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 6d 65 6e 75 29 5d 0a 20 20 20 5b 22 54 .....gptel-rewrite-menu)]....["T
1bea0 77 65 61 6b 20 52 65 73 70 6f 6e 73 65 22 20 3a 69 66 20 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 weak.Response".:if.gptel--in-res
1bec0 70 6f 6e 73 65 2d 70 20 3a 70 61 64 2d 6b 65 79 73 20 74 0a 20 20 20 20 28 22 53 50 43 22 20 22 ponse-p.:pad-keys.t.....("SPC"."
1bee0 4d 61 72 6b 22 20 67 70 74 65 6c 2d 2d 6d 61 72 6b 2d 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 Mark".gptel--mark-response).....
1bf00 28 22 50 22 20 22 50 72 65 76 69 6f 75 73 20 76 61 72 69 61 6e 74 22 20 67 70 74 65 6c 2d 2d 70 ("P"."Previous.variant".gptel--p
1bf20 72 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 0a 20 20 20 20 20 3a 69 66 20 67 70 74 65 6c 2d 2d revious-variant......:if.gptel--
1bf40 61 74 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 0a 20 20 20 20 20 3a 74 72 61 6e at-response-history-p......:tran
1bf60 73 69 65 6e 74 20 74 29 0a 20 20 20 20 28 22 4e 22 20 22 4e 65 78 74 20 76 61 72 69 61 6e 74 22 sient.t).....("N"."Next.variant"
1bf80 20 67 70 74 65 6c 2d 2d 70 72 65 76 69 6f 75 73 2d 76 61 72 69 61 6e 74 0a 20 20 20 20 20 3a 69 .gptel--previous-variant......:i
1bfa0 66 20 67 70 74 65 6c 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 0a 20 f.gptel--at-response-history-p..
1bfc0 20 20 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 20 20 20 20 28 22 45 22 20 22 45 64 69 66 ....:transient.t).....("E"."Edif
1bfe0 66 20 70 72 65 76 69 6f 75 73 22 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 0a 20 20 20 20 20 3a 69 f.previous".gptel--ediff......:i
1c000 66 20 67 70 74 65 6c 2d 2d 61 74 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 2d 70 29 5d f.gptel--at-response-history-p)]
1c020 0a 20 20 20 5b 22 44 72 79 20 52 75 6e 22 20 3a 69 66 20 28 6c 61 6d 62 64 61 20 28 29 20 28 6f ....["Dry.Run".:if.(lambda.().(o
1c040 72 20 67 70 74 65 6c 2d 6c 6f 67 2d 6c 65 76 65 6c 20 67 70 74 65 6c 2d 65 78 70 65 72 74 2d 63 r.gptel-log-level.gptel-expert-c
1c060 6f 6d 6d 61 6e 64 73 29 29 0a 20 20 20 20 28 22 49 22 20 22 49 6e 73 70 65 63 74 20 71 75 65 72 ommands)).....("I"."Inspect.quer
1c080 79 20 28 4c 69 73 70 29 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 y.(Lisp)"......(lambda.().......
1c0a0 20 22 49 6e 73 70 65 63 74 20 74 68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62 65 ."Inspect.the.query.that.will.be
1c0c0 20 73 65 6e 74 20 61 73 20 61 20 6c 69 73 70 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 20 20 .sent.as.a.lisp.object."........
1c0e0 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e (interactive)........(gptel--san
1c100 69 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 itize-model)........(gptel--insp
1c120 65 63 74 2d 71 75 65 72 79 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 ect-query.........(gptel--suffix
1c140 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 22 49 22 20 28 74 72 61 6e 73 69 -send..........(cons."I".(transi
1c160 65 6e 74 2d 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 ent-args.transient-current-comma
1c180 6e 64 29 29 29 29 29 29 0a 20 20 20 20 28 22 4a 22 20 22 49 6e 73 70 65 63 74 20 71 75 65 72 79 nd)))))).....("J"."Inspect.query
1c1a0 20 28 4a 53 4f 4e 29 22 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 .(JSON)"......(lambda.()........
1c1c0 22 49 6e 73 70 65 63 74 20 74 68 65 20 71 75 65 72 79 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 "Inspect.the.query.that.will.be.
1c1e0 73 65 6e 74 20 61 73 20 61 20 4a 53 4f 4e 20 6f 62 6a 65 63 74 2e 22 0a 20 20 20 20 20 20 20 28 sent.as.a.JSON.object."........(
1c200 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 interactive)........(gptel--sani
1c220 74 69 7a 65 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 73 70 65 tize-model)........(gptel--inspe
1c240 63 74 2d 71 75 65 72 79 0a 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d ct-query.........(gptel--suffix-
1c260 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 22 49 22 20 28 74 72 61 6e 73 69 65 send..........(cons."I".(transie
1c280 6e 74 2d 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e nt-args.transient-current-comman
1c2a0 64 29 29 29 0a 20 20 20 20 20 20 20 20 27 6a 73 6f 6e 29 29 29 5d 5d 0a 20 20 28 69 6e 74 65 72 d))).........'json)))]]...(inter
1c2c0 61 63 74 69 76 65 29 0a 20 20 28 67 70 74 65 6c 2d 2d 73 61 6e 69 74 69 7a 65 2d 6d 6f 64 65 6c active)...(gptel--sanitize-model
1c2e0 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 20 27 67 70 74 65 6c 2d 6d 65 6e 75 )...(transient-setup.'gptel-menu
1c300 29 29 0a 0a 3b 3b 20 2a 2a 20 50 72 65 66 69 78 20 66 6f 72 20 73 65 74 74 69 6e 67 20 74 68 65 ))..;;.**.Prefix.for.setting.the
1c320 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 2e 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 73 79 73 .system.prompt..(defun.gptel-sys
1c340 74 65 6d 2d 70 72 6f 6d 70 74 2d 2d 73 65 74 75 70 20 28 5f 29 0a 20 20 22 53 65 74 20 75 70 20 tem-prompt--setup.(_)..."Set.up.
1c360 73 75 66 66 69 78 65 73 20 66 6f 72 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 2e 22 0a 20 20 28 suffixes.for.system.prompt."...(
1c380 74 72 61 6e 73 69 65 6e 74 2d 70 61 72 73 65 2d 73 75 66 66 69 78 65 73 0a 20 20 20 27 67 70 74 transient-parse-suffixes....'gpt
1c3a0 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 0a 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 el-system-prompt....(cl-loop.for
1c3c0 20 28 74 79 70 65 20 2e 20 70 72 6f 6d 70 74 29 20 69 6e 20 67 70 74 65 6c 2d 64 69 72 65 63 74 .(type...prompt).in.gptel-direct
1c3e0 69 76 65 73 0a 20 20 20 20 20 20 20 3b 3b 20 41 76 6f 69 64 20 63 6c 61 73 68 65 73 20 77 69 74 ives........;;.Avoid.clashes.wit
1c400 68 20 74 68 65 20 63 75 73 74 6f 6d 20 64 69 72 65 63 74 69 76 65 20 6b 65 79 0a 20 20 20 20 20 h.the.custom.directive.key......
1c420 20 20 77 69 74 68 20 75 6e 75 73 65 64 2d 6b 65 79 73 20 3d 20 28 64 65 6c 65 74 65 20 3f 73 20 ..with.unused-keys.=.(delete.?s.
1c440 28 6e 75 6d 62 65 72 2d 73 65 71 75 65 6e 63 65 20 3f 61 20 3f 7a 29 29 0a 20 20 20 20 20 20 20 (number-sequence.?a.?z))........
1c460 77 69 74 68 20 77 69 64 74 68 20 3d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 0a 20 20 20 20 with.width.=.(window-width).....
1c480 20 20 20 66 6f 72 20 6e 61 6d 65 20 3d 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 79 70 65 29 ...for.name.=.(symbol-name.type)
1c4a0 0a 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 20 3d 20 28 73 65 71 2d 66 69 6e 64 20 28 6c 61 6d ........for.key.=.(seq-find.(lam
1c4c0 62 64 61 20 28 6b 29 20 28 6d 65 6d 62 65 72 20 6b 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 20 bda.(k).(member.k.unused-keys)).
1c4e0 6e 61 6d 65 20 28 73 65 71 2d 66 69 72 73 74 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 name.(seq-first.unused-keys))...
1c500 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 75 6e 75 73 65 64 2d 6b 65 79 73 20 28 64 65 6c 65 74 .....do.(setq.unused-keys.(delet
1c520 65 20 6b 65 79 20 75 6e 75 73 65 64 2d 6b 65 79 73 29 29 0a 20 20 20 20 20 20 20 3b 3b 20 54 68 e.key.unused-keys))........;;.Th
1c540 65 20 65 78 70 6c 69 63 69 74 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 22 3a 74 72 61 6e 73 69 65 e.explicit.declaration.":transie
1c560 6e 74 20 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 65 74 75 72 6e 22 20 68 65 72 65 0a 20 20 nt.transient--do-return".here...
1c580 20 20 20 20 20 3b 3b 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20 72 65 71 75 69 72 65 64 20 66 .....;;.appears.to.be.required.f
1c5a0 6f 72 20 54 72 61 6e 73 69 65 6e 74 20 76 30 2e 35 20 61 6e 64 20 75 70 2e 20 20 57 69 74 68 6f or.Transient.v0.5.and.up...Witho
1c5c0 75 74 20 69 74 2c 20 74 68 65 73 65 0a 20 20 20 20 20 20 20 3b 3b 20 61 72 65 20 74 72 65 61 74 ut.it,.these........;;.are.treat
1c5e0 65 64 20 61 73 20 73 75 66 66 69 78 65 73 20 77 68 65 6e 20 69 6e 76 6f 6b 69 6e 67 20 60 67 70 ed.as.suffixes.when.invoking.`gp
1c600 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 27 20 64 69 72 65 63 74 6c 79 2c 0a 20 20 20 tel-system-prompt'.directly,....
1c620 20 20 20 20 3b 3b 20 61 6e 64 20 69 6e 66 69 78 65 73 20 77 68 65 6e 20 67 6f 69 6e 67 20 74 68 ....;;.and.infixes.when.going.th
1c640 72 6f 75 67 68 20 60 67 70 74 65 6c 2d 6d 65 6e 75 27 2e 0a 20 20 20 20 20 20 20 3b 3b 20 54 4f rough.`gptel-menu'.........;;.TO
1c660 44 4f 3a 20 52 61 69 73 65 20 61 6e 20 69 73 73 75 65 20 77 69 74 68 20 54 72 61 6e 73 69 65 6e DO:.Raise.an.issue.with.Transien
1c680 74 2e 0a 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 6c 69 73 74 20 28 6b 65 79 2d 64 65 73 t.........collect.(list.(key-des
1c6a0 63 72 69 70 74 69 6f 6e 20 28 6c 69 73 74 20 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 cription.(list.key))............
1c6c0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 63 61 70 69 74 61 6c 69 7a 65 20 6e 61 ..........(concat.(capitalize.na
1c6e0 6d 65 29 20 22 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 me).".".........................
1c700 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 27 28 .....(propertize.".".'display.'(
1c720 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 32 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 space.:align-to.20))............
1c740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 ..................(propertize...
1c760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e ............................(con
1c780 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cat.............................
1c7a0 20 20 20 22 28 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..."("..........................
1c7c0 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 0a 20 20 20 20 20 20 20 20 20 20 ......(string-replace...........
1c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 20 22 20 22 0a 20 ......................"\n"."."..
1c800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ...............................(
1c820 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 70 72 6f 6d 70 74 20 truncate-string-to-width.prompt.
1c840 28 2d 20 77 69 64 74 68 20 33 30 29 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 (-.width.30).nil.nil.t))........
1c860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 29 22 29 0a 20 20 20 ........................")")....
1c880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 ...........................'face
1c8a0 20 27 73 68 61 64 6f 77 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .'shadow))......................
1c8c0 60 28 6c 61 6d 62 64 61 20 28 29 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 `(lambda.().(interactive).......
1c8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 44 69 72 65 ..................(message."Dire
1c900 63 74 69 76 65 3a 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ctive:.%s"......................
1c920 20 20 20 20 2c 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22 20 22 e2 ae 90 20 22 ....,(string-replace."\n"."...."
1c940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 ............................(tru
1c960 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 70 72 6f 6d 70 74 20 31 30 30 ncate-string-to-width.prompt.100
1c980 20 6e 69 6c 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .nil.nil.t)))...................
1c9a0 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 27 67 70 ......(gptel--set-with-scope.'gp
1c9c0 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 2c 70 72 6f 6d 70 74 0a 20 20 20 20 tel--system-message.,prompt.....
1c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 65 74 2d .....................gptel--set-
1ca00 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 0a 09 09 20 20 20 20 20 3a 74 72 61 6e 73 69 65 buffer-locally))........:transie
1ca20 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 72 65 74 75 72 6e 29 0a 20 20 20 20 20 20 nt.'transient--do-return).......
1ca40 20 69 6e 74 6f 20 70 72 6f 6d 70 74 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 66 69 6e .into.prompt-suffixes........fin
1ca60 61 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 28 6e 63 6f 6e 63 0a 20 20 20 20 20 20 ally.return........(nconc.......
1ca80 20 20 70 72 6f 6d 70 74 2d 73 75 66 66 69 78 65 73 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 ..prompt-suffixes.........(list.
1caa0 28 6c 69 73 74 20 22 53 50 43 22 20 22 50 69 63 6b 20 63 72 6f 77 64 73 6f 75 72 63 65 64 20 70 (list."SPC"."Pick.crowdsourced.p
1cac0 72 6f 6d 70 74 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 rompt".....................'gpte
1cae0 6c 2d 2d 72 65 61 64 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 0a 09 09 20 20 l--read-crowdsourced-prompt.....
1cb00 20 20 3b 3b 20 4e 4f 54 45 3a 20 51 75 69 74 74 69 6e 67 20 74 68 65 20 63 6f 6d 70 6c 65 74 69 ..;;.NOTE:.Quitting.the.completi
1cb20 6e 67 20 72 65 61 64 20 77 68 65 6e 20 70 69 63 6b 69 6e 67 20 61 0a 09 09 20 20 20 20 3b 3b 20 ng.read.when.picking.a.......;;.
1cb40 63 72 6f 77 64 73 6f 75 72 63 65 64 20 70 72 6f 6d 70 74 20 77 69 6c 6c 20 63 61 75 73 65 20 74 crowdsourced.prompt.will.cause.t
1cb60 68 65 20 74 72 61 6e 73 69 65 6e 74 20 74 6f 20 65 78 69 74 0a 09 09 20 20 20 20 3b 3b 20 69 6e he.transient.to.exit.......;;.in
1cb80 73 74 65 61 64 20 6f 66 20 72 65 74 75 72 6e 69 6e 67 20 74 6f 20 74 68 65 20 73 79 73 74 65 6d stead.of.returning.to.the.system
1cba0 20 70 72 6f 6d 70 74 20 6d 65 6e 75 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .prompt.menu....................
1cbc0 20 20 3a 74 72 61 6e 73 69 65 6e 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69 74 ..:transient.'transient--do-exit
1cbe0 29 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 20 28 61 75 74 6f 6c 6f 61 64 ))))))..;;;###autoload.(autoload
1cc00 20 27 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 20 22 67 70 74 65 6c 2d 74 72 61 .'gptel-system-prompt."gptel-tra
1cc20 6e 73 69 65 6e 74 22 20 6e 69 6c 20 74 29 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 nsient".nil.t).(transient-define
1cc40 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 20 28 29 0a 20 -prefix.gptel-system-prompt.()..
1cc60 20 22 53 65 74 20 74 68 65 20 4c 4c 4d 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 66 6f 72 ."Set.the.LLM.system.message.for
1cc80 20 4c 4c 4d 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 20 69 6e 20 74 68 69 73 20 62 75 66 66 65 72 .LLM.interactions.in.this.buffer
1cca0 2e 0a 0a 54 68 65 20 5c 22 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 5c 22 20 65 73 74 61 62 6c ...The.\"system.message\".establ
1ccc0 69 73 68 65 73 20 64 69 72 65 63 74 69 76 65 73 20 66 6f 72 20 74 68 65 20 63 68 61 74 0a 73 65 ishes.directives.for.the.chat.se
1cce0 73 73 69 6f 6e 20 61 6e 64 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 ssion.and.modifies.the.behavior.
1cd00 6f 66 20 74 68 65 20 4c 4c 4d 2e 20 53 6f 6d 65 20 65 78 61 6d 70 6c 65 73 20 6f 66 0a 73 79 73 of.the.LLM..Some.examples.of.sys
1cd20 74 65 6d 20 70 72 6f 6d 70 74 73 20 61 72 65 3a 0a 0a 59 6f 75 20 61 72 65 20 61 20 68 65 6c 70 tem.prompts.are:..You.are.a.help
1cd40 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 41 6e 73 77 65 72 20 61 73 20 63 6f 6e 63 69 73 65 ful.assistant..Answer.as.concise
1cd60 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 2e 0a 52 65 70 6c 79 20 6f 6e 6c 79 20 77 69 74 68 20 ly.as.possible..Reply.only.with.
1cd80 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 20 6e 6f 20 70 72 6f 73 65 2e 0a 59 6f 75 shell.commands.and.no.prose..You
1cda0 20 61 72 65 20 61 20 70 6f 65 74 2e 20 52 65 70 6c 79 20 6f 6e 6c 79 20 69 6e 20 76 65 72 73 65 .are.a.poet..Reply.only.in.verse
1cdc0 2e 0a 0a 4d 6f 72 65 20 65 78 74 65 6e 73 69 76 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 ...More.extensive.system.message
1cde0 73 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c 20 66 6f 72 20 73 70 65 63 69 66 69 63 20 74 61 73 s.can.be.useful.for.specific.tas
1ce00 6b 73 2e 0a 0a 43 75 73 74 6f 6d 69 7a 65 20 60 67 70 74 65 6c 2d 64 69 72 65 63 74 69 76 65 73 ks...Customize.`gptel-directives
1ce20 27 20 66 6f 72 20 74 61 73 6b 2d 73 70 65 63 69 66 69 63 20 70 72 6f 6d 70 74 73 2e 22 0a 20 20 '.for.task-specific.prompts."...
1ce40 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 29 20 28 73 74 72 [:description....(lambda.().(str
1ce60 69 6e 67 2d 72 65 70 6c 61 63 65 0a 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 20 22 e2 ae 90 20 ing-replace..........."\n"."....
1ce80 22 0a 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d "...........(truncate-string-to-
1cea0 77 69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d width............gptel--system-m
1cec0 65 73 73 61 67 65 20 28 6d 61 78 20 28 2d 20 28 77 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 31 32 essage.(max.(-.(window-width).12
1cee0 29 20 31 34 29 20 6e 69 6c 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 5b 28 67 70 74 65 6c 2d 2d 73 ).14).nil.nil.t)))....[(gptel--s
1cf00 75 66 66 69 78 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 5d 0a 20 20 20 5b 28 67 70 74 65 uffix-system-message)]....[(gpte
1cf20 6c 2d 2d 69 6e 66 69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 65 29 5d 5d 0a 20 20 20 5b 3a l--infix-variable-scope)]]....[:
1cf40 63 6c 61 73 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 6f 6c 75 6d 6e 0a 20 20 20 20 3a 73 65 74 75 class.transient-column.....:setu
1cf60 70 2d 63 68 69 6c 64 72 65 6e 20 67 70 74 65 6c 2d 73 79 73 74 65 6d 2d 70 72 6f 6d 70 74 2d 2d p-children.gptel-system-prompt--
1cf80 73 65 74 75 70 0a 20 20 20 20 3a 70 61 64 2d 6b 65 79 73 20 74 5d 29 0a 0a 3b 3b 20 2a 2a 20 50 setup.....:pad-keys.t])..;;.**.P
1cfa0 72 65 66 69 78 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 2f 72 65 66 61 63 74 6f 72 69 6e 67 0a refix.for.rewriting/refactoring.
1cfc0 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 70 72 65 66 69 78 20 67 70 74 65 6c 2d .(transient-define-prefix.gptel-
1cfe0 72 65 77 72 69 74 65 2d 6d 65 6e 75 20 28 29 0a 20 20 22 52 65 77 72 69 74 65 20 6f 72 20 72 65 rewrite-menu.()..."Rewrite.or.re
1d000 66 61 63 74 6f 72 20 74 65 78 74 20 72 65 67 69 6f 6e 20 75 73 69 6e 67 20 61 6e 20 4c 4c 4d 2e factor.text.region.using.an.LLM.
1d020 22 0a 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a "...[:description....(lambda.().
1d040 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 44 69 72 65 63 74 69 76 65 3a 20 20 25 73 22 0a 20 20 .....(format."Directive:..%s"...
1d060 20 20 20 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 ...........(truncate-string-to-w
1d080 69 64 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 67 70 74 65 6c 2d 2d 72 65 idth...............(or.gptel--re
1d0a0 77 72 69 74 65 2d 6d 65 73 73 61 67 65 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 write-message.(gptel--rewrite-me
1d0c0 73 73 61 67 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 2d 20 28 77 ssage))...............(max.(-.(w
1d0e0 69 6e 64 6f 77 2d 77 69 64 74 68 29 20 31 34 29 20 32 30 29 20 6e 69 6c 20 6e 69 6c 20 74 29 29 indow-width).14).20).nil.nil.t))
1d100 29 0a 20 20 20 28 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 70 72 6f 6d 70 )....(gptel--infix-rewrite-promp
1d120 74 29 5d 0a 20 20 5b 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 44 69 66 66 20 4f 70 74 69 6f t)]...[[:description."Diff.Optio
1d140 6e 73 22 0a 20 20 20 28 22 2d 77 22 20 22 57 6f 72 64 77 69 73 65 20 64 69 66 66 22 20 22 2d 77 ns"....("-w"."Wordwise.diff"."-w
1d160 22 29 5d 0a 20 20 20 5b 3a 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 28 6c 61 6d 62 64 61 ")]....[:description.....(lambda
1d180 20 28 29 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 70 72 6f 67 2d 6d 6f .().(if.(derived-mode-p.'prog-mo
1d1a0 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 66 61 63 74 6f 72 22 20 22 52 65 de)..............."Refactor"."Re
1d1c0 77 72 69 74 65 22 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 write")).....(gptel--suffix-rewr
1d1e0 69 74 65 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d ite).....(gptel--suffix-rewrite-
1d200 61 6e 64 2d 72 65 70 6c 61 63 65 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d and-replace).....(gptel--suffix-
1d220 72 65 77 72 69 74 65 2d 61 6e 64 2d 65 64 69 66 66 29 5d 5d 0a 20 20 28 69 6e 74 65 72 61 63 74 rewrite-and-ediff)]]...(interact
1d240 69 76 65 29 0a 20 20 28 75 6e 6c 65 73 73 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 ive)...(unless.gptel--rewrite-me
1d260 73 73 61 67 65 0a 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d ssage.....(setq.gptel--rewrite-m
1d280 65 73 73 61 67 65 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 29 29 essage.(gptel--rewrite-message))
1d2a0 29 0a 20 20 28 74 72 61 6e 73 69 65 6e 74 2d 73 65 74 75 70 20 27 67 70 74 65 6c 2d 72 65 77 72 )...(transient-setup.'gptel-rewr
1d2c0 69 74 65 2d 6d 65 6e 75 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 72 61 6e 73 69 65 6e 74 20 49 6e 66 ite-menu))....;;.*.Transient.Inf
1d2e0 69 78 65 73 0a 0a 3b 3b 20 2a 2a 20 49 6e 66 69 78 65 73 20 66 6f 72 20 6d 6f 64 65 6c 20 70 61 ixes..;;.**.Infixes.for.model.pa
1d300 72 61 6d 65 74 65 72 73 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e 66 69 rameters..(transient-define-infi
1d320 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 76 61 72 69 61 62 6c 65 2d 73 63 6f 70 65 20 28 29 x.gptel--infix-variable-scope.()
1d340 0a 20 20 22 53 65 74 20 67 70 74 65 6c 27 73 20 6d 6f 64 65 6c 20 70 61 72 61 6d 65 74 65 72 73 ..."Set.gptel's.model.parameters
1d360 20 61 6e 64 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 69 6e 20 74 68 69 73 20 62 75 66 66 .and.system.message.in.this.buff
1d380 65 72 20 6f 72 20 67 6c 6f 62 61 6c 6c 79 2e 22 0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 73 63 er.or.globally."...:argument."sc
1d3a0 6f 70 65 22 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 ope"...:variable.'gptel--set-buf
1d3c0 66 65 72 2d 6c 6f 63 61 6c 6c 79 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 2d 73 77 69 fer-locally...:class.'gptel--swi
1d3e0 74 63 68 65 73 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 20 25 6b 20 25 64 20 25 76 22 0a 20 20 3a tches...:format."..%k.%d.%v"...:
1d400 6b 65 79 20 22 3d 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 70 72 6f 70 65 72 74 69 key."="...:description.(properti
1d420 7a 65 20 22 53 65 74 22 20 27 66 61 63 65 20 27 74 72 61 6e 73 69 65 6e 74 2d 69 6e 61 63 74 69 ze."Set".'face.'transient-inacti
1d440 76 65 2d 61 72 67 75 6d 65 6e 74 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 ve-argument))..(transient-define
1d460 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 -infix.gptel--infix-num-messages
1d480 2d 74 6f 2d 73 65 6e 64 20 28 29 0a 20 20 22 4e 75 6d 62 65 72 20 6f 66 20 72 65 63 65 6e 74 20 -to-send.()..."Number.of.recent.
1d4a0 6d 65 73 73 61 67 65 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 20 65 78 63 68 61 messages.to.send.with.each.excha
1d4c0 6e 67 65 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 66 75 6c 6c 20 63 6f 6e 76 65 nge...By.default,.the.full.conve
1d4e0 72 73 61 74 69 6f 6e 20 68 69 73 74 6f 72 79 20 69 73 20 73 65 6e 74 20 77 69 74 68 20 65 76 65 rsation.history.is.sent.with.eve
1d500 72 79 20 6e 65 77 0a 70 72 6f 6d 70 74 2e 20 54 68 69 73 20 72 65 74 61 69 6e 73 20 74 68 65 20 ry.new.prompt..This.retains.the.
1d520 66 75 6c 6c 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e full.context.of.the.conversation
1d540 2c 20 62 75 74 0a 63 61 6e 20 62 65 20 65 78 70 65 6e 73 69 76 65 20 69 6e 20 74 6f 6b 65 6e 20 ,.but.can.be.expensive.in.token.
1d560 73 69 7a 65 2e 20 53 65 74 20 68 6f 77 20 6d 61 6e 79 20 72 65 63 65 6e 74 20 6d 65 73 73 61 67 size..Set.how.many.recent.messag
1d580 65 73 20 74 6f 0a 69 6e 63 6c 75 64 65 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 es.to.include."...:description."
1d5a0 70 72 65 76 69 6f 75 73 20 72 65 73 70 6f 6e 73 65 73 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 previous.responses"...:class.'gp
1d5c0 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 tel-lisp-variable...:variable.'g
1d5e0 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 0a 20 20 3a 73 65 ptel--num-messages-to-send...:se
1d600 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a t-value.#'gptel--set-with-scope.
1d620 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 27 61 6c 6c 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 ..:display-nil.'all...:format.".
1d640 25 6b 20 25 76 20 25 64 22 0a 20 20 3a 6b 65 79 20 22 2d 6e 22 0a 20 20 3a 70 72 6f 6d 70 74 20 %k.%v.%d"...:key."-n"...:prompt.
1d660 22 4e 75 6d 62 65 72 20 6f 66 20 70 61 73 74 20 6d 65 73 73 61 67 65 73 20 74 6f 20 69 6e 63 6c "Number.of.past.messages.to.incl
1d680 75 64 65 20 66 6f 72 20 63 6f 6e 74 65 78 74 20 28 6c 65 61 76 65 20 65 6d 70 74 79 20 66 6f 72 ude.for.context.(leave.empty.for
1d6a0 20 61 6c 6c 29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 27 67 70 74 65 6c 2d 2d 74 72 61 6e 73 .all):."...:reader.'gptel--trans
1d6c0 69 65 6e 74 2d 72 65 61 64 2d 76 61 72 69 61 62 6c 65 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d ient-read-variable)..(transient-
1d6e0 64 65 66 69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 6d 61 78 2d 74 6f define-infix.gptel--infix-max-to
1d700 6b 65 6e 73 20 28 29 0a 20 20 22 4d 61 78 20 74 6f 6b 65 6e 73 20 70 65 72 20 72 65 73 70 6f 6e kens.()..."Max.tokens.per.respon
1d720 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 72 6f 75 67 68 6c 79 20 74 68 65 20 6e 75 6d 62 65 72 20 se...This.is.roughly.the.number.
1d740 6f 66 20 77 6f 72 64 73 20 69 6e 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 20 31 30 30 2d 33 30 of.words.in.the.response..100-30
1d760 30 20 69 73 20 61 0a 72 65 61 73 6f 6e 61 62 6c 65 20 72 61 6e 67 65 20 66 6f 72 20 73 68 6f 72 0.is.a.reasonable.range.for.shor
1d780 74 20 61 6e 73 77 65 72 73 2c 20 34 30 30 20 6f 72 20 6d 6f 72 65 20 66 6f 72 20 6c 6f 6e 67 65 t.answers,.400.or.more.for.longe
1d7a0 72 0a 72 65 73 70 6f 6e 73 65 73 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 52 65 r.responses."...:description."Re
1d7c0 73 70 6f 6e 73 65 20 6c 65 6e 67 74 68 20 28 74 6f 6b 65 6e 73 29 22 0a 20 20 3a 63 6c 61 73 73 sponse.length.(tokens)"...:class
1d7e0 20 27 67 70 74 65 6c 2d 6c 69 73 70 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c .'gptel-lisp-variable...:variabl
1d800 65 20 27 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 e.'gptel-max-tokens...:set-value
1d820 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 64 69 73 70 .#'gptel--set-with-scope...:disp
1d840 6c 61 79 2d 6e 69 6c 20 27 61 75 74 6f 0a 20 20 3a 6b 65 79 20 22 2d 63 22 0a 20 20 3a 70 72 6f lay-nil.'auto...:key."-c"...:pro
1d860 6d 70 74 20 22 52 65 73 70 6f 6e 73 65 20 6c 65 6e 67 74 68 20 69 6e 20 74 6f 6b 65 6e 73 20 28 mpt."Response.length.in.tokens.(
1d880 6c 65 61 76 65 20 65 6d 70 74 79 3a 20 64 65 66 61 75 6c 74 2c 20 38 30 2d 32 30 30 3a 20 73 68 leave.empty:.default,.80-200:.sh
1d8a0 6f 72 74 2c 20 32 30 30 2d 35 30 30 3a 20 6c 6f 6e 67 29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 ort,.200-500:.long):."...:reader
1d8c0 20 27 67 70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 64 2d 76 61 72 69 61 62 6c 65 .'gptel--transient-read-variable
1d8e0 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c )..(transient-define-infix.gptel
1d900 2d 2d 69 6e 66 69 78 2d 70 72 6f 76 69 64 65 72 20 28 29 0a 20 20 22 41 49 20 50 72 6f 76 69 64 --infix-provider.()..."AI.Provid
1d920 65 72 20 66 6f 72 20 43 68 61 74 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 47 50 er.for.Chat."...:description."GP
1d940 54 20 4d 6f 64 65 6c 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 70 72 6f 76 69 64 65 T.Model"...:class.'gptel-provide
1d960 72 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a 70 72 6f 6d 70 74 20 22 4d 6f 64 65 6c 3a 20 22 0a 20 r-variable...:prompt."Model:."..
1d980 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 0a 20 20 3a 73 65 74 .:variable.'gptel-backend...:set
1d9a0 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 0a 20 -value.#'gptel--set-with-scope..
1d9c0 20 3a 6d 6f 64 65 6c 20 27 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 3a 6b 65 79 20 22 2d 6d 22 .:model.'gptel-model...:key."-m"
1d9e0 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 26 72 65 73 74 ...:reader.(lambda.(prompt.&rest
1da00 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 ._).............(cl-loop........
1da20 20 20 20 20 20 20 66 6f 72 20 28 6e 61 6d 65 20 2e 20 62 61 63 6b 65 6e 64 29 20 69 6e 20 67 70 ......for.(name...backend).in.gp
1da40 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 tel--known-backends.............
1da60 20 6e 63 6f 6e 63 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 6d 6f 64 65 6c 20 69 6e 20 28 67 70 .nconc.(cl-loop.for.model.in.(gp
1da80 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6d 6f 64 65 6c 73 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 tel-backend-models.backend).....
1daa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 ........................collect.
1dac0 28 6c 69 73 74 20 28 63 6f 6e 63 61 74 20 6e 61 6d 65 20 22 3a 22 20 6d 6f 64 65 6c 29 20 62 61 (list.(concat.name.":".model).ba
1dae0 63 6b 65 6e 64 20 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 6f 20 ckend.model))..............into.
1db00 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 20 66 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 0a 20 20 20 20 models-alist.finally.return.....
1db20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 61 73 73 6f 63 20 28 63 6f 6d 70 6c 65 74 69 6e 67 .........(cdr.(assoc.(completing
1db40 2d 72 65 61 64 20 70 72 6f 6d 70 74 20 6d 6f 64 65 6c 73 2d 61 6c 69 73 74 20 6e 69 6c 20 74 29 -read.prompt.models-alist.nil.t)
1db60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 73 ..........................models
1db80 2d 61 6c 69 73 74 29 29 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 69 -alist)))))..(transient-define-i
1dba0 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 74 65 6d 70 65 72 61 74 75 72 65 20 28 29 nfix.gptel--infix-temperature.()
1dbc0 0a 20 20 22 54 65 6d 70 65 72 61 74 75 72 65 20 6f 66 20 72 65 71 75 65 73 74 2e 22 0a 20 20 3a ..."Temperature.of.request."...:
1dbe0 64 65 73 63 72 69 70 74 69 6f 6e 20 22 54 65 6d 70 65 72 61 74 75 72 65 20 28 30 20 2d 20 32 2e description."Temperature.(0.-.2.
1dc00 30 29 22 0a 20 20 3a 63 6c 61 73 73 20 27 74 72 61 6e 73 69 65 6e 74 2d 6c 69 73 70 2d 76 61 72 0)"...:class.'transient-lisp-var
1dc20 69 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 iable...:variable.'gptel-tempera
1dc40 74 75 72 65 0a 20 20 3a 73 65 74 2d 76 61 6c 75 65 20 23 27 67 70 74 65 6c 2d 2d 73 65 74 2d 77 ture...:set-value.#'gptel--set-w
1dc60 69 74 68 2d 73 63 6f 70 65 0a 20 20 3a 6b 65 79 20 22 2d 74 22 0a 20 20 3a 70 72 6f 6d 70 74 20 ith-scope...:key."-t"...:prompt.
1dc80 22 54 65 6d 70 65 72 61 74 75 72 65 20 63 6f 6e 74 72 6f 6c 73 20 74 68 65 20 72 65 73 70 6f 6e "Temperature.controls.the.respon
1dca0 73 65 20 72 61 6e 64 6f 6d 6e 65 73 73 20 28 30 2e 30 2d 32 2e 30 2c 20 6c 65 61 76 65 20 65 6d se.randomness.(0.0-2.0,.leave.em
1dcc0 70 74 79 20 66 6f 72 20 64 65 66 61 75 6c 74 29 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 27 67 pty.for.default):."...:reader.'g
1dce0 70 74 65 6c 2d 2d 74 72 61 6e 73 69 65 6e 74 2d 72 65 61 64 2d 76 61 72 69 61 62 6c 65 29 0a 0a ptel--transient-read-variable)..
1dd00 3b 3b 20 2a 2a 20 49 6e 66 69 78 20 66 6f 72 20 74 68 65 20 72 65 66 61 63 74 6f 72 2f 72 65 77 ;;.**.Infix.for.the.refactor/rew
1dd20 72 69 74 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d rite.system.message..(transient-
1dd40 64 65 66 69 6e 65 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 61 64 64 2d 64 69 define-infix.gptel--infix-add-di
1dd60 72 65 63 74 69 76 65 20 28 29 0a 20 20 22 41 64 64 69 74 69 6f 6e 61 6c 20 64 69 72 65 63 74 69 rective.()..."Additional.directi
1dd80 76 65 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 71 75 65 72 79 20 6f ve.intended.for.the.next.query.o
1dda0 6e 6c 79 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20 64 65 66 69 6e 65 20 61 nly...This.is.useful.to.define.a
1ddc0 20 71 75 69 63 6b 20 74 61 73 6b 20 6f 6e 20 74 6f 70 20 6f 66 20 61 20 6d 6f 72 65 20 65 78 74 .quick.task.on.top.of.a.more.ext
1dde0 65 6e 73 69 76 65 0a 6f 72 20 64 65 74 61 69 6c 65 64 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 ensive.or.detailed.system.messag
1de00 65 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 77 69 74 68 20 63 6f 64 65 2f 74 65 78 74 20 e...For.example,.with.code/text.
1de20 73 65 6c 65 63 74 65 64 3a 0a 0a 2d 20 52 65 77 72 69 74 65 20 74 68 69 73 20 66 75 6e 63 74 69 selected:..-.Rewrite.this.functi
1de40 6f 6e 20 74 6f 20 64 6f 20 58 20 77 68 69 6c 65 20 61 76 6f 69 64 69 6e 67 20 59 2e 0a 2d 20 43 on.to.do.X.while.avoiding.Y..-.C
1de60 68 61 6e 67 65 20 74 68 65 20 74 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 hange.the.tone.of.the.following.
1de80 70 61 72 61 67 72 61 70 68 20 74 6f 20 62 65 20 6d 6f 72 65 20 64 69 72 65 63 74 2e 0a 0a 4f 72 paragraph.to.be.more.direct...Or
1dea0 20 69 6e 20 61 6e 20 65 78 74 65 6e 64 65 64 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 3a 0a 0a 2d .in.an.extended.conversation:..-
1dec0 20 50 68 72 61 73 65 20 79 6f 75 20 6e 65 78 74 20 72 65 73 70 6f 6e 73 65 20 69 6e 20 74 65 6e .Phrase.you.next.response.in.ten
1dee0 20 77 6f 72 64 73 20 6f 72 20 6c 65 73 73 2e 0a 2d 20 50 72 65 74 65 6e 64 20 66 6f 72 20 6e 6f .words.or.less..-.Pretend.for.no
1df00 77 20 74 68 61 74 20 79 6f 75 27 72 65 20 61 6e 20 61 6e 74 68 72 6f 70 6f 6c 6f 67 69 73 74 2e w.that.you're.an.anthropologist.
1df20 22 0a 20 20 3a 63 6c 61 73 73 20 27 67 70 74 65 6c 2d 6f 70 74 69 6f 6e 2d 6f 76 65 72 6c 61 69 "...:class.'gptel-option-overlai
1df40 64 0a 20 20 3b 3b 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 69 6e 73 74 72 75 63 d...;;.:variable.'gptel--instruc
1df60 74 69 6f 6e 73 0a 20 20 3a 64 69 73 70 6c 61 79 2d 6e 69 6c 20 27 6e 6f 6e 65 0a 20 20 3a 6f 76 tions...:display-nil.'none...:ov
1df80 65 72 6c 61 79 20 6e 69 6c 0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 3a 22 0a 20 20 3a 70 72 6f erlay.nil...:argument.":"...:pro
1dfa0 6d 70 74 20 22 49 6e 73 74 72 75 63 74 69 6f 6e 73 20 66 6f 72 20 6e 65 78 74 20 72 65 73 70 6f mpt."Instructions.for.next.respo
1dfc0 6e 73 65 20 6f 6e 6c 79 3a 20 22 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 nse.only:."...:reader.(lambda.(p
1dfe0 72 6f 6d 70 74 20 69 6e 69 74 69 61 6c 20 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 rompt.initial.history)..........
1e000 20 20 20 28 6c 65 74 2a 20 28 28 65 78 74 72 61 20 28 72 65 61 64 2d 73 74 72 69 6e 67 20 70 72 ...(let*.((extra.(read-string.pr
1e020 6f 6d 70 74 20 69 6e 69 74 69 61 6c 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 ompt.initial.history))).........
1e040 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 2d 65 6d 70 74 79 2d 70 20 65 78 ......(unless.(string-empty-p.ex
1e060 74 72 61 29 20 65 78 74 72 61 29 29 29 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 25 64 20 tra).extra)))...:format.".%k.%d.
1e080 25 76 22 0a 20 20 3a 6b 65 79 20 22 64 22 0a 20 20 3a 61 72 67 75 6d 65 6e 74 20 22 3a 22 0a 20 %v"...:key."d"...:argument.":"..
1e0a0 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 41 64 64 20 64 69 72 65 63 74 69 76 65 22 0a 20 20 .:description."Add.directive"...
1e0c0 3a 74 72 61 6e 73 69 65 6e 74 20 74 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 :transient.t)..(transient-define
1e0e0 2d 69 6e 66 69 78 20 67 70 74 65 6c 2d 2d 69 6e 66 69 78 2d 72 65 77 72 69 74 65 2d 70 72 6f 6d -infix.gptel--infix-rewrite-prom
1e100 70 74 20 28 29 0a 20 20 22 43 68 61 74 20 64 69 72 65 63 74 69 76 65 20 28 73 79 73 74 65 6d 20 pt.()..."Chat.directive.(system.
1e120 6d 65 73 73 61 67 65 29 20 74 6f 20 75 73 65 20 66 6f 72 20 72 65 77 72 69 74 69 6e 67 20 6f 72 message).to.use.for.rewriting.or
1e140 20 72 65 66 61 63 74 6f 72 69 6e 67 2e 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c .refactoring."...:description.(l
1e160 61 6d 62 64 61 20 28 29 20 28 69 66 20 28 64 65 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 70 72 ambda.().(if.(derived-mode-p.'pr
1e180 6f 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 og-mode)........................
1e1a0 20 20 22 53 65 74 20 64 69 72 65 63 74 69 76 65 73 20 66 6f 72 20 72 65 66 61 63 74 6f 72 22 0a .."Set.directives.for.refactor".
1e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 65 74 20 64 69 72 65 ......................."Set.dire
1e1e0 63 74 69 76 65 73 20 66 6f 72 20 72 65 77 72 69 74 65 22 29 29 0a 20 20 3a 66 6f 72 6d 61 74 20 ctives.for.rewrite"))...:format.
1e200 22 25 6b 20 25 64 22 0a 20 20 3a 63 6c 61 73 73 20 27 74 72 61 6e 73 69 65 6e 74 2d 6c 69 73 70 "%k.%d"...:class.'transient-lisp
1e220 2d 76 61 72 69 61 62 6c 65 0a 20 20 3a 76 61 72 69 61 62 6c 65 20 27 67 70 74 65 6c 2d 2d 72 65 -variable...:variable.'gptel--re
1e240 77 72 69 74 65 2d 6d 65 73 73 61 67 65 0a 20 20 3a 6b 65 79 20 22 68 22 0a 20 20 3a 70 72 6f 6d write-message...:key."h"...:prom
1e260 70 74 20 22 53 65 74 20 64 69 72 65 63 74 69 76 65 20 66 6f 72 20 72 65 77 72 69 74 65 3a 20 22 pt."Set.directive.for.rewrite:."
1e280 0a 20 20 3a 72 65 61 64 65 72 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 6d 70 74 20 5f 20 68 69 73 ...:reader.(lambda.(prompt._.his
1e2a0 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 73 74 72 69 6e 67 0a 20 tory).............(read-string..
1e2c0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 20 28 67 70 74 65 6c 2d 2d 72 65 77 72 69 ............prompt.(gptel--rewri
1e2e0 74 65 2d 6d 65 73 73 61 67 65 29 20 68 69 73 74 6f 72 79 29 29 29 0a 0a 0c 0a 3b 3b 20 2a 20 54 te-message).history)))....;;.*.T
1e300 72 61 6e 73 69 65 6e 74 20 53 75 66 66 69 78 65 73 0a 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 78 20 ransient.Suffixes..;;.**.Suffix.
1e320 74 6f 20 73 65 6e 64 20 70 72 6f 6d 70 74 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e to.send.prompt..(transient-defin
1e340 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 20 28 61 72 67 e-suffix.gptel--suffix-send.(arg
1e360 73 29 0a 20 20 22 53 65 6e 64 20 41 52 47 53 2e 22 0a 20 20 3a 6b 65 79 20 22 52 45 54 22 0a 20 s)..."Send.ARGS."...:key."RET"..
1e380 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 53 65 6e 64 20 70 72 6f 6d 70 74 22 0a 20 20 28 69 .:description."Send.prompt"...(i
1e3a0 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 73 nteractive.(list.(transient-args
1e3c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 74 72 61 6e 73 .......................(or.trans
1e3e0 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 20 27 67 70 74 65 6c 2d 6d 65 6e 75 ient-current-command.'gptel-menu
1e400 29 29 29 29 0a 20 20 28 6c 65 74 20 28 28 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 ))))...(let.((stream.gptel-strea
1e420 6d 29 0a 20 20 20 20 20 20 20 20 28 69 6e 2d 70 6c 61 63 65 20 28 61 6e 64 20 28 6d 65 6d 62 65 m).........(in-place.(and.(membe
1e440 72 20 22 69 22 20 61 72 67 73 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 28 6f 75 74 70 75 74 2d r."i".args).t)).........(output-
1e460 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 29 0a 20 20 20 20 20 20 20 20 28 62 61 63 6b to-other-buffer-p).........(back
1e480 65 6e 64 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 28 6d 6f 64 65 end.gptel-backend).........(mode
1e4a0 6c 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 0a 20 20 20 20 20 20 20 20 28 62 61 63 6b 65 6e 64 2d l.gptel-model).........(backend-
1e4c0 6e 61 6d 65 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 name.(gptel-backend-name.gptel-b
1e4e0 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 29 20 28 70 6f 73 69 74 ackend)).........(buffer).(posit
1e500 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 28 63 61 6c 6c 62 61 63 6b 29 20 28 67 70 74 65 6c 2d 62 ion).........(callback).(gptel-b
1e520 75 66 66 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 28 73 79 73 74 65 6d 2d 65 78 74 72 uffer-name).........(system-extr
1e540 61 20 28 67 70 74 65 6c 2d 2d 67 65 74 2d 64 69 72 65 63 74 69 76 65 20 61 72 67 73 29 29 0a 20 a.(gptel--get-directive.args))..
1e560 20 20 20 20 20 20 20 28 64 72 79 2d 72 75 6e 20 28 61 6e 64 20 28 6d 65 6d 62 65 72 20 22 49 22 .......(dry-run.(and.(member."I"
1e580 20 61 72 67 73 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 70 75 74 20 72 65 64 69 .args).t)).........;;.Input.redi
1e5a0 72 65 63 74 69 6f 6e 3a 20 67 72 61 62 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 65 6c 73 65 77 68 rection:.grab.prompt.from.elsewh
1e5c0 65 72 65 3f 0a 20 20 20 20 20 20 20 20 28 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 20 28 63 ere?.........(prompt..........(c
1e5e0 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 6d 22 20 61 72 67 73 29 ond...........((member."m".args)
1e600 0a 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 ............(read-string........
1e620 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 41 73 6b 20 25 73 3a 20 22 20 28 67 70 74 65 6c 2d 62 .....(format."Ask.%s:.".(gptel-b
1e640 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 ackend-name.gptel-backend)).....
1e660 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 ........(and.(use-region-p).....
1e680 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e .............(buffer-substring-n
1e6a0 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 o-properties...................(
1e6c0 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 region-beginning).(region-end)))
1e6e0 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 79 22 20 61 72 67 73 29 0a ))...........((member."y".args).
1e700 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 63 61 72 2d 73 61 66 65 20 6b 69 6c ...........(unless.(car-safe.kil
1e720 6c 2d 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 72 6f 72 l-ring)..............(user-error
1e740 20 22 60 6b 69 6c 6c 2d 72 69 6e 67 27 20 69 73 20 65 6d 70 74 79 21 20 20 4e 6f 74 68 69 6e 67 ."`kill-ring'.is.empty!..Nothing
1e760 20 74 6f 20 73 65 6e 64 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 63 75 72 72 65 .to.send"))............(if.curre
1e780 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 nt-prefix-arg................(re
1e7a0 61 64 2d 66 72 6f 6d 2d 6b 69 6c 6c 2d 72 69 6e 67 20 22 50 72 6f 6d 70 74 20 66 72 6f 6d 20 6b ad-from-kill-ring."Prompt.from.k
1e7c0 69 6c 6c 2d 72 69 6e 67 3a 20 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 ill-ring:.")..............(curre
1e7e0 6e 74 2d 6b 69 6c 6c 20 30 29 29 29 29 29 29 0a 0a 20 20 20 20 3b 3b 20 4f 75 74 70 75 74 20 72 nt-kill.0))))))......;;.Output.r
1e800 65 64 69 72 65 63 74 69 6f 6e 3a 20 53 65 6e 64 20 72 65 73 70 6f 6e 73 65 20 65 6c 73 65 77 68 edirection:.Send.response.elsewh
1e820 65 72 65 3f 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 65 22 ere?.....(cond......((member."e"
1e840 20 61 72 67 73 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 73 74 72 65 61 6d 20 6e 69 6c 29 0a 20 .args).......(setq.stream.nil)..
1e860 20 20 20 20 20 28 73 65 74 71 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 .....(setq.callback.............
1e880 28 6c 61 6d 62 64 61 20 28 72 65 73 70 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 (lambda.(resp.info).............
1e8a0 20 20 28 69 66 20 72 65 73 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 ..(if.resp...................(me
1e8c0 73 73 61 67 65 20 22 25 73 20 72 65 73 70 6f 6e 73 65 3a 20 25 73 22 20 62 61 63 6b 65 6e 64 2d ssage."%s.response:.%s".backend-
1e8e0 6e 61 6d 65 20 72 65 73 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 name.resp).................(mess
1e900 61 67 65 20 22 25 73 20 72 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a 20 25 73 22 20 62 61 63 6b age."%s.response.error:.%s".back
1e920 65 6e 64 2d 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 end-name.(plist-get.info.:status
1e940 29 29 29 29 29 29 0a 20 20 20 20 20 28 28 6d 65 6d 62 65 72 20 22 6b 22 20 61 72 67 73 29 0a 20 ))))))......((member."k".args)..
1e960 20 20 20 20 20 28 73 65 74 71 20 73 74 72 65 61 6d 20 6e 69 6c 29 0a 20 20 20 20 20 20 28 73 65 .....(setq.stream.nil).......(se
1e980 74 71 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 tq.callback.............(lambda.
1e9a0 28 72 65 73 70 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e (resp.info)...............(if.(n
1e9c0 6f 74 20 72 65 73 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 ot.resp)...................(mess
1e9e0 61 67 65 20 22 25 73 20 72 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a 20 25 73 22 20 62 61 63 6b age."%s.response.error:.%s".back
1ea00 65 6e 64 2d 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 73 74 61 74 75 73 end-name.(plist-get.info.:status
1ea20 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 6e 65 77 20 72 65 73 )).................(kill-new.res
1ea40 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 25 73 20 p).................(message."%s.
1ea60 72 65 73 70 6f 6e 73 65 3a 20 5c 22 25 73 5c 22 20 63 6f 70 69 65 64 20 74 6f 20 6b 69 6c 6c 2d response:.\"%s\".copied.to.kill-
1ea80 72 69 6e 67 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ring."..........................
1eaa0 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 backend-name....................
1eac0 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 68 20 ......(truncate-string-to-width.
1eae0 72 65 73 70 20 33 30 29 29 29 29 29 29 0a 20 20 20 20 20 28 28 73 65 74 71 20 67 70 74 65 6c 2d resp.30))))))......((setq.gptel-
1eb00 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 73 6f 6d 65 buffer-name.............(cl-some
1eb20 20 28 6c 61 6d 62 64 61 20 28 73 29 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29 20 28 73 .(lambda.(s).(and.(stringp.s).(s
1eb40 74 72 69 6e 67 2d 70 72 65 66 69 78 2d 70 20 22 67 22 20 73 29 0a 20 20 20 20 20 20 20 20 20 20 tring-prefix-p."g".s)...........
1eb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e .......................(substrin
1eb80 67 20 73 20 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 g.s.1)))......................ar
1eba0 67 73 29 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 gs)).......(setq.output-to-other
1ebc0 2d 62 75 66 66 65 72 2d 70 20 74 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 64 75 63 65 -buffer-p.t).......(let.((reduce
1ebe0 64 2d 70 72 6f 6d 70 74 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 46 6f 72 20 69 6e 73 65 72 74 d-prompt.............;For.insert
1ec00 69 6e 67 20 69 6e 74 6f 20 74 68 65 20 67 70 74 65 6c 20 62 75 66 66 65 72 20 61 73 0a 20 20 20 ing.into.the.gptel.buffer.as....
1ec20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1ec40 20 20 20 20 20 3b 63 6f 6e 74 65 78 74 2c 20 6e 6f 74 20 74 68 65 20 70 72 6f 6d 70 74 20 75 73 .....;context,.not.the.prompt.us
1ec60 65 64 20 66 6f 72 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ed.for.the......................
1ec80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 72 65 71 75 65 73 74 20 69 74 73 65 ...................;request.itse
1eca0 6c 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 lf..............(or.prompt......
1ecc0 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 ............(if.(use-region-p)..
1ece0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 ....................(buffer-subs
1ed00 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 tring-no-properties.(region-begi
1ed20 6e 6e 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nning)..........................
1ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 ............................(reg
1ed60 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 ion-end))....................(bu
1ed80 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 ffer-substring-no-properties....
1eda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e .................(save-excursion
1edc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 2d 70 72 6f .......................(text-pro
1ede0 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 perty-search-backward...........
1ee00 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 .............'gptel.'response...
1ee20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 2d .....................(when.(get-
1ee40 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 char-property.(max.(point-min).(
1ee60 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1-.(point)))....................
1ee80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 .............................'gp
1eea0 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 tel)..........................t)
1eec0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 29 ).......................(point))
1eee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 74 2d .....................(gptel--at-
1ef00 77 6f 72 64 2d 65 6e 64 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 word-end.(point))))))).........(
1ef20 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 28 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 28 67 cond..........((buffer-live-p.(g
1ef40 65 74 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 0a 20 20 et-buffer.gptel-buffer-name))...
1ef60 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 69 6e 74 6f 20 65 78 69 73 74 69 6e 67 20 ........;;.Insert.into.existing.
1ef80 67 70 74 65 6c 20 73 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 gptel.session...........(progn..
1efa0 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 ...........(setq.buffer.(get-buf
1efc0 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 fer.gptel-buffer-name)).........
1efe0 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a ....(with-current-buffer.buffer.
1f000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d ..............(goto-char.(point-
1f020 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6f 72 20 max))...............(unless.(or.
1f040 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 buffer-read-only................
1f060 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 ...........(get-char-property.(p
1f080 6f 69 6e 74 29 20 27 72 65 61 64 2d 6f 6e 6c 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 oint).'read-only))..............
1f0a0 20 20 20 28 69 6e 73 65 72 74 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 29 0a 20 20 20 20 ...(insert.reduced-prompt)).....
1f0c0 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 6f 73 69 74 69 6f 6e 20 28 70 6f 69 6e 74 29 ..........(setq.position.(point)
1f0e0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 )...............(when.gptel-mode
1f100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d .................(gptel--update-
1f120 73 74 61 74 75 73 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e 69 6e 67 29 29 29 status.".Waiting...".'warning)))
1f140 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 49 6e 73 65 72 74 20 69 6e 74 6f 20 6e 65 77 20 67 ))..........;;.Insert.into.new.g
1f160 70 74 65 6c 20 73 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 28 74 20 28 73 65 74 71 20 62 ptel.session..........(t.(setq.b
1f180 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 20 67 uffer...................(gptel.g
1f1a0 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ptel-buffer-name................
1f1c0 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 ..........(condition-case.nil...
1f1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 ...........................(gpte
1f200 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l--get-api-key).................
1f220 20 20 20 20 20 20 20 20 20 20 20 28 28 65 72 72 6f 72 20 75 73 65 72 2d 65 72 72 6f 72 29 0a 20 ...........((error.user-error)..
1f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 ...........................(setq
1f260 20 67 70 74 65 6c 2d 61 70 69 2d 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .gptel-api-key..................
1f280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 70 61 73 73 77 64 0a 20 20 .................(read-passwd...
1f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1f2c0 20 28 66 6f 72 6d 61 74 20 22 25 73 20 41 50 49 20 6b 65 79 3a 20 22 0a 20 20 20 20 20 20 20 20 .(format."%s.API.key:.".........
1f2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1f300 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 ...(gptel-backend-name..........
1f320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1f340 20 20 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 ...gptel-backend))))))..........
1f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 64 75 63 65 64 2d 70 72 6f 6d 70 74 29 29 ................reduced-prompt))
1f380 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 74 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 .............;;.Set.backend.and.
1f3a0 6d 6f 64 65 6c 20 69 6e 20 6e 65 77 20 73 65 73 73 69 6f 6e 20 66 72 6f 6d 20 63 75 72 72 65 6e model.in.new.session.from.curren
1f3c0 74 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 t.buffer.............(with-curre
1f3e0 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 nt-buffer.buffer...............(
1f400 73 65 74 71 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 setq.gptel-backend.backend).....
1f420 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 20 6d 6f 64 65 ..........(setq.gptel-model.mode
1f440 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 75 70 64 61 74 65 2d l)...............(gptel--update-
1f460 73 74 61 74 75 73 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 27 77 61 72 6e 69 6e 67 29 0a 20 status.".Waiting...".'warning)..
1f480 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 6f 73 69 74 69 6f 6e 20 28 70 6f 69 .............(setq.position.(poi
1f4a0 6e 74 29 29 29 29 29 29 29 0a 20 20 20 20 20 28 28 73 65 74 71 20 67 70 74 65 6c 2d 62 75 66 66 nt)))))))......((setq.gptel-buff
1f4c0 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 73 6f 6d 65 20 28 6c 61 er-name.............(cl-some.(la
1f4e0 6d 62 64 61 20 28 73 29 20 28 61 6e 64 20 28 73 74 72 69 6e 67 70 20 73 29 20 28 73 74 72 69 6e mbda.(s).(and.(stringp.s).(strin
1f500 67 2d 70 72 65 66 69 78 2d 70 20 22 62 22 20 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g-prefix-p."b".s)...............
1f520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 73 20 ...................(substring.s.
1f540 31 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 73 29 29 1)))......................args))
1f560 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 .......(setq.output-to-other-buf
1f580 66 65 72 2d 70 20 74 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 20 28 67 65 74 fer-p.t).......(setq.buffer.(get
1f5a0 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 -buffer-create.gptel-buffer-name
1f5c0 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 )).......(with-current-buffer.bu
1f5e0 66 66 65 72 20 28 73 65 74 71 20 70 6f 73 69 74 69 6f 6e 20 28 70 6f 69 6e 74 29 29 29 29 29 0a ffer.(setq.position.(point))))).
1f600 0a 20 20 20 20 28 70 72 6f 67 31 20 28 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 70 72 6f 6d 70 .....(prog1.(gptel-request.promp
1f620 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 62 75 66 66 65 72 20 28 6f 72 20 62 75 66 66 65 t..............:buffer.(or.buffe
1f640 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 r.(current-buffer)).............
1f660 20 3a 70 6f 73 69 74 69 6f 6e 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 .:position.position.............
1f680 20 3a 69 6e 2d 70 6c 61 63 65 20 28 61 6e 64 20 69 6e 2d 70 6c 61 63 65 20 28 6e 6f 74 20 6f 75 .:in-place.(and.in-place.(not.ou
1f6a0 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 29 29 0a 20 20 20 20 20 20 20 tput-to-other-buffer-p))........
1f6c0 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 ......:stream.stream............
1f6e0 20 20 3a 73 79 73 74 65 6d 20 28 63 6f 6e 63 61 74 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d ..:system.(concat.gptel--system-
1f700 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 2d 65 78 74 72 61 29 0a 20 20 20 20 20 20 20 20 20 20 message.system-extra)...........
1f720 20 20 20 3a 63 61 6c 6c 62 61 63 6b 20 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 ...:callback.callback...........
1f740 20 20 20 3a 64 72 79 2d 72 75 6e 20 64 72 79 2d 72 75 6e 29 0a 0a 20 20 20 20 20 20 28 67 70 74 ...:dry-run.dry-run)........(gpt
1f760 65 6c 2d 2d 75 70 64 61 74 65 2d 73 74 61 74 75 73 20 22 20 57 61 69 74 69 6e 67 2e 2e 2e 22 20 el--update-status.".Waiting...".
1f780 27 77 61 72 6e 69 6e 67 29 0a 0a 20 20 20 20 20 20 3b 3b 20 4e 4f 54 45 3a 20 50 6f 73 73 69 62 'warning)........;;.NOTE:.Possib
1f7a0 6c 65 20 66 75 74 75 72 65 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 68 65 72 65 20 69 66 le.future.race.condition.here.if
1f7c0 20 45 6d 61 63 73 20 65 76 65 72 20 64 72 6f 70 73 20 74 68 65 20 47 49 4c 2e 0a 20 20 20 20 20 .Emacs.ever.drops.the.GIL.......
1f7e0 20 3b 3b 20 54 68 65 20 48 54 54 50 20 72 65 71 75 65 73 74 20 63 61 6c 6c 62 61 63 6b 20 6d 69 .;;.The.HTTP.request.callback.mi
1f800 67 68 74 20 6d 6f 64 69 66 79 20 74 68 65 20 62 75 66 66 65 72 20 62 65 66 6f 72 65 20 74 68 65 ght.modify.the.buffer.before.the
1f820 20 69 6e 2d 70 6c 61 63 65 0a 20 20 20 20 20 20 3b 3b 20 74 65 78 74 20 69 73 20 6b 69 6c 6c 65 .in-place.......;;.text.is.kille
1f840 64 20 62 65 6c 6f 77 2e 0a 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 70 6c 61 63 65 0a 20 20 d.below........(when.in-place...
1f860 20 20 20 20 20 20 3b 3b 20 4b 69 6c 6c 20 74 68 65 20 6c 61 74 65 73 74 20 70 72 6f 6d 70 74 0a ......;;.Kill.the.latest.prompt.
1f880 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 65 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ........(let.((beg..............
1f8a0 20 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 ..(if.(use-region-p)............
1f8c0 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 0a 20 20 20 20 20 ........(region-beginning)......
1f8e0 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 ............(save-excursion.....
1f900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 ...............(text-property-se
1f920 61 72 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 arch-backward...................
1f940 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..'gptel.'response..............
1f960 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 .......(when.(get-char-property.
1f980 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 (max.(point-min).(1-.(point)))..
1f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1f9c0 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ............'gptel).............
1f9e0 20 20 20 20 20 20 20 20 20 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..........t))...................
1fa00 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 20 28 .(point))))...............(end.(
1fa20 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 20 28 if.(use-region-p).(region-end).(
1fa40 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 6f 75 74 70 point))))...........(unless.outp
1fa60 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 ut-to-other-buffer-p............
1fa80 20 3b 3b 20 73 74 6f 72 65 20 74 68 65 20 6b 69 6c 6c 65 64 20 74 65 78 74 20 69 6e 20 67 70 74 .;;.store.the.killed.text.in.gpt
1faa0 65 6c 2d 68 69 73 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 el-history.............(gptel--a
1fac0 74 74 61 63 68 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 ttach-response-history..........
1fae0 20 20 20 20 28 6c 69 73 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 ....(list.(buffer-substring-no-p
1fb00 72 6f 70 65 72 74 69 65 73 20 62 65 67 20 65 6e 64 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 roperties.beg.end))))...........
1fb20 28 6b 69 6c 6c 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 29 29 0a 0a 20 20 20 20 20 20 28 (kill-region.beg.end)))........(
1fb40 77 68 65 6e 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d 62 75 66 66 65 72 2d 70 0a 20 20 when.output-to-other-buffer-p...
1fb60 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63 61 74 20 22 50 72 6f 6d 70 74 20 73 ......(message.(concat."Prompt.s
1fb80 65 6e 74 20 74 6f 20 62 75 66 66 65 72 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ent.to.buffer:."................
1fba0 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 67 70 74 65 6c 2d 62 75 66 66 ..........(propertize.gptel-buff
1fbc0 65 72 2d 6e 61 6d 65 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 er-name.'face.'help-key-binding)
1fbe0 29 29 0a 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 20 )).........(display-buffer......
1fc00 20 20 20 20 62 75 66 66 65 72 20 27 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 72 65 75 ....buffer.'((display-buffer-reu
1fc20 73 65 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 se-window....................dis
1fc40 70 6c 61 79 2d 62 75 66 66 65 72 2d 70 6f 70 2d 75 70 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 play-buffer-pop-up-window)......
1fc60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 75 73 61 62 6c 65 2d 66 72 61 6d 65 73 20 2e 20 .............(reusable-frames...
1fc80 76 69 73 69 62 6c 65 29 29 29 29 29 29 29 0a 0a 3b 3b 20 41 6c 6c 6f 77 20 63 61 6c 6c 69 6e 67 visible)))))))..;;.Allow.calling
1fca0 20 66 72 6f 6d 20 65 6c 69 73 70 0a 28 70 75 74 20 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d .from.elisp.(put.'gptel--suffix-
1fcc0 73 65 6e 64 20 27 69 6e 74 65 72 61 63 74 69 76 65 2d 6f 6e 6c 79 20 6e 69 6c 29 0a 0a 3b 3b 20 send.'interactive-only.nil)..;;.
1fce0 2a 2a 20 53 75 66 66 69 78 20 74 6f 20 72 65 67 65 6e 65 72 61 74 65 20 72 65 73 70 6f 6e 73 65 **.Suffix.to.regenerate.response
1fd00 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 67 65 6e 65 72 61 74 65 20 28 29 0a 20 20 ..(defun.gptel--regenerate.()...
1fd20 22 52 65 67 65 6e 65 72 61 74 65 20 67 70 74 65 6c 20 72 65 73 70 6f 6e 73 65 20 61 74 20 70 6f "Regenerate.gptel.response.at.po
1fd40 69 6e 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 77 68 65 6e 20 28 67 int."...(interactive)...(when.(g
1fd60 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29 0a 20 20 20 20 28 70 63 61 73 65 2d ptel--in-response-p).....(pcase-
1fd80 6c 65 74 2a 20 28 28 60 28 2c 62 65 67 20 2e 20 2c 65 6e 64 29 20 28 67 70 74 65 6c 2d 2d 67 65 let*.((`(,beg...,end).(gptel--ge
1fda0 74 2d 62 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 69 73 t-bounds))..................(his
1fdc0 74 6f 72 79 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 70 6f 69 6e 74 29 20 tory.(get-char-property.(point).
1fde0 27 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 'gptel-history))................
1fe00 20 20 28 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 73 20 28 63 6f 6e 73 20 28 62 75 66 66 65 72 2d ..(prev-responses.(cons.(buffer-
1fe20 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 62 65 67 20 65 6e 64 29 substring-no-properties.beg.end)
1fe40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1fe60 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 67 ........history))).......(when.g
1fe80 70 74 65 6c 2d 6d 6f 64 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 52 65 6d 6f ptel-mode..................;Remo
1fea0 76 65 20 70 72 65 66 69 78 2f 73 75 66 66 69 78 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 ve.prefix/suffix.........(save-e
1fec0 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 62 65 xcursion...........(goto-char.be
1fee0 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b g)...........(when.(looking-back
1ff00 20 28 63 6f 6e 63 61 74 20 22 5c 6e 2b 22 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 67 70 .(concat."\n+".(regexp-quote.(gp
1ff20 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 tel-response-prefix-string)))...
1ff40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 ............................(poi
1ff60 6e 74 2d 6d 69 6e 29 20 27 67 72 65 65 64 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 nt-min).'greedy).............(se
1ff80 74 71 20 62 65 67 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 tq.beg.(match-beginning.0)))....
1ffa0 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 .......(goto-char.end)..........
1ffc0 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .(when.(looking-at..............
1ffe0 20 20 20 20 28 63 6f 6e 63 61 74 20 22 5c 6e 2b 22 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 ....(concat."\n+".(regexp-quote.
20000 28 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 0a (gptel-prompt-prefix-string)))).
20020 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6e 64 20 28 6d 61 74 63 68 2d 65 6e 64 ............(setq.end.(match-end
20040 20 30 29 29 29 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 62 65 67 .0))))).......(delete-region.beg
20060 20 65 6e 64 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 74 74 61 63 68 2d 72 65 73 70 6f .end).......(gptel--attach-respo
20080 6e 73 65 2d 68 69 73 74 6f 72 79 20 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 73 29 0a 20 20 20 20 nse-history.prev-responses).....
200a0 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 2d 73 ..(call-interactively.#'gptel--s
200c0 75 66 66 69 78 2d 73 65 6e 64 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 53 65 74 20 73 79 73 74 65 6d uffix-send))))..;;.**.Set.system
200e0 20 6d 65 73 73 61 67 65 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 61 64 2d 63 72 6f 77 .message.(defun.gptel--read-crow
20100 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 20 28 29 0a 20 20 22 50 69 63 6b 20 61 20 63 72 6f dsourced-prompt.()..."Pick.a.cro
20120 77 64 73 6f 75 72 63 65 64 20 73 79 73 74 65 6d 20 70 72 6f 6d 70 74 20 66 6f 72 20 67 70 74 65 wdsourced.system.prompt.for.gpte
20140 6c 2e 0a 0a 54 68 69 73 20 75 73 65 73 20 74 68 65 20 70 72 6f 6d 70 74 73 20 69 6e 20 74 68 65 l...This.uses.the.prompts.in.the
20160 20 76 61 72 69 61 62 6c 65 0a 60 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 .variable.`gptel--crowdsourced-p
20180 72 6f 6d 70 74 73 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 rompts',.which.see."...(interact
201a0 69 76 65 29 0a 20 20 28 69 66 20 28 6e 6f 74 20 28 68 61 73 68 2d 74 61 62 6c 65 2d 65 6d 70 74 ive)...(if.(not.(hash-table-empt
201c0 79 2d 70 20 28 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 y-p.(gptel--crowdsourced-prompts
201e0 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 6f 69 63 65 0a 20 20 20 20 20 20 20 20 ))).......(let.((choice.........
20200 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 0a 20 20 20 20 20 20 20 20 20 20 .....(completing-read...........
20220 20 20 20 20 22 50 69 63 6b 20 61 6e 64 20 65 64 69 74 20 70 72 6f 6d 70 74 3a 20 22 0a 20 20 20 ...."Pick.and.edit.prompt:."....
20240 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 74 72 20 70 72 65 64 20 61 63 74 ...........(lambda.(str.pred.act
20260 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 20 61 63 74 ion).................(if.(eq.act
20280 69 6f 6e 20 27 6d 65 74 61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ion.'metadata)..................
202a0 20 20 20 60 28 6d 65 74 61 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...`(metadata...................
202c0 20 20 20 20 28 61 66 66 69 78 61 74 69 6f 6e 2d 66 75 6e 63 74 69 6f 6e 20 2e 0a 20 20 20 20 20 ....(affixation-function........
202e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63 61 6e 64 73 ..................(lambda.(cands
20300 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 )..........................(mapc
20320 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 ar...........................(la
20340 6d 62 64 61 20 28 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mbda.(c)........................
20360 20 20 20 20 20 28 6c 69 73 74 20 63 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....(list.c."".................
20380 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 70 72 6f 70 65 72 74 69 7a 65 .............(concat.(propertize
203a0 20 22 20 22 20 27 64 69 73 70 6c 61 79 20 27 28 73 70 61 63 65 20 3a 61 6c 69 67 6e 2d 74 6f 20 .".".'display.'(space.:align-to.
203c0 32 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22))............................
203e0 20 20 20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 67 65 74 68 61 73 68 20 63 20 67 70 ...".".(propertize.(gethash.c.gp
20400 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 tel--crowdsourced-prompts)......
20420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 61 63 65 20 ..........................'face.
20440 27 63 6f 6d 70 6c 65 74 69 6f 6e 73 2d 61 6e 6e 6f 74 61 74 69 6f 6e 73 29 29 29 29 0a 20 20 20 'completions-annotations))))....
20460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6e 64 73 29 29 29 29 .......................cands))))
20480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 65 2d 77 69 74 ...................(complete-wit
204a0 68 2d 61 63 74 69 6f 6e 20 61 63 74 69 6f 6e 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 h-action.action.gptel--crowdsour
204c0 63 65 64 2d 70 72 6f 6d 70 74 73 20 73 74 72 20 70 72 65 64 29 29 29 0a 20 20 20 20 20 20 20 20 ced-prompts.str.pred))).........
204e0 20 20 20 20 20 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 ......nil.t))).........(when-let
20500 20 28 28 70 72 6f 6d 70 74 20 28 67 65 74 68 61 73 68 20 63 68 6f 69 63 65 20 67 70 74 65 6c 2d .((prompt.(gethash.choice.gptel-
20520 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 20 -crowdsourced-prompts)))........
20540 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 .....(setq.gptel--system-message
20560 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 .prompt).............(call-inter
20580 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 79 73 74 65 6d 2d actively.#'gptel--suffix-system-
205a0 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 4e 6f 20 70 72 6f 6d message))).....(message."No.prom
205c0 70 74 73 20 61 76 61 69 6c 61 62 6c 65 2e 22 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 pts.available.")))..(transient-d
205e0 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 79 73 74 65 efine-suffix.gptel--suffix-syste
20600 6d 2d 6d 65 73 73 61 67 65 20 28 29 0a 20 20 22 45 64 69 74 20 4c 4c 4d 20 73 79 73 74 65 6d 20 m-message.()..."Edit.LLM.system.
20620 6d 65 73 73 61 67 65 2e 0a 0a 57 68 65 6e 20 4c 4f 43 41 4c 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c message...When.LOCAL.is.non-nil,
20640 20 73 65 74 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 6f 6e 6c 79 20 69 6e 20 .set.the.system.message.only.in.
20660 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 22 0a 20 20 3a 74 72 61 6e 73 69 65 6e the.current.buffer."...:transien
20680 74 20 27 74 72 61 6e 73 69 65 6e 74 2d 2d 64 6f 2d 65 78 69 74 0a 20 20 3a 64 65 73 63 72 69 70 t.'transient--do-exit...:descrip
206a0 74 69 6f 6e 20 22 53 65 74 20 6f 72 20 65 64 69 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 tion."Set.or.edit.system.message
206c0 22 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 20 20 25 64 22 0a 20 20 3a 6b 65 79 20 22 73 "...:format.".%k...%d"...:key."s
206e0 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6c 65 74 20 28 28 6f 72 69 67 2d "...(interactive)...(let.((orig-
20700 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 6d buf.(current-buffer)).........(m
20720 73 67 2d 73 74 61 72 74 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 29 29 0a 20 20 20 20 28 77 69 sg-start.(make-marker))).....(wi
20740 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 th-current-buffer.(get-buffer-cr
20760 65 61 74 65 20 22 2a 67 70 74 65 6c 2d 73 79 73 74 65 6d 2a 22 29 0a 20 20 20 20 20 20 28 6c 65 eate."*gptel-system*").......(le
20780 74 20 28 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 t.((inhibit-read-only.t)).......
207a0 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 28 74 65 78 74 2d 6d ..(erase-buffer).........(text-m
207c0 6f 64 65 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 65 61 64 65 72 2d 6c 69 6e 65 2d 66 ode).........(setq.header-line-f
207e0 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 ormat...............(concat.....
20800 20 20 20 20 20 20 20 20 20 20 20 22 45 64 69 74 20 79 6f 75 72 20 73 79 73 74 65 6d 20 6d 65 73 ..........."Edit.your.system.mes
20820 73 61 67 65 20 62 65 6c 6f 77 20 61 6e 64 20 70 72 65 73 73 20 22 0a 20 20 20 20 20 20 20 20 20 sage.below.and.press."..........
20840 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 43 2d 63 20 43 2d 63 22 20 27 66 61 63 ......(propertize."C-c.C-c".'fac
20860 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 e.'help-key-binding)............
20880 20 20 20 20 22 20 77 68 65 6e 20 72 65 61 64 79 2c 20 6f 72 20 22 0a 20 20 20 20 20 20 20 20 20 ....".when.ready,.or."..........
208a0 20 20 20 20 20 20 28 70 72 6f 70 65 72 74 69 7a 65 20 22 43 2d 63 20 43 2d 6b 22 20 27 66 61 63 ......(propertize."C-c.C-k".'fac
208c0 65 20 27 68 65 6c 70 2d 6b 65 79 2d 62 69 6e 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 e.'help-key-binding)............
208e0 20 20 20 20 22 20 74 6f 20 61 62 6f 72 74 2e 22 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 ....".to.abort.")).........(inse
20900 72 74 0a 20 20 20 20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c 65 3a 20 59 6f 75 20 61 72 65 20 rt.........."#.Example:.You.are.
20920 61 20 68 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 41 6e 73 77 65 72 20 61 73 20 63 a.helpful.assistant..Answer.as.c
20940 6f 6e 63 69 73 65 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 2e 5c 6e 22 0a 20 20 20 20 20 20 20 oncisely.as.possible.\n"........
20960 20 20 22 23 20 45 78 61 6d 70 6c 65 3a 20 52 65 70 6c 79 20 6f 6e 6c 79 20 77 69 74 68 20 73 68 .."#.Example:.Reply.only.with.sh
20980 65 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 20 6e 6f 20 70 72 6f 73 65 2e 5c 6e 22 0a 20 20 ell.commands.and.no.prose.\n"...
209a0 20 20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c 65 3a 20 59 6f 75 20 61 72 65 20 61 20 70 6f 65 ......."#.Example:.You.are.a.poe
209c0 74 2e 20 52 65 70 6c 79 20 6f 6e 6c 79 20 69 6e 20 76 65 72 73 65 2e 5c 6e 5c 6e 22 29 0a 20 20 t..Reply.only.in.verse.\n\n")...
209e0 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 ......(add-text-properties......
20a00 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 ....(point-min).(1-.(point))....
20a20 20 20 20 20 20 20 28 6c 69 73 74 20 27 72 65 61 64 2d 6f 6e 6c 79 20 74 20 27 66 61 63 65 20 27 ......(list.'read-only.t.'face.'
20a40 66 6f 6e 74 2d 6c 6f 63 6b 2d 63 6f 6d 6d 65 6e 74 2d 66 61 63 65 29 29 0a 20 20 20 20 20 20 20 font-lock-comment-face))........
20a60 20 3b 3b 20 54 4f 44 4f 3a 20 6d 61 6b 65 2d 73 65 70 61 72 61 74 6f 72 2d 6c 69 6e 65 20 72 65 .;;.TODO:.make-separator-line.re
20a80 71 75 69 72 65 73 20 45 6d 61 63 73 20 32 38 2e 31 2b 2e 0a 20 20 20 20 20 20 20 20 3b 3b 20 28 quires.Emacs.28.1+..........;;.(
20aa0 69 6e 73 65 72 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 6d 61 6b 65 2d 73 65 70 61 72 61 74 insert.(propertize.(make-separat
20ac0 6f 72 2d 6c 69 6e 65 29 20 27 72 65 61 72 2d 6e 6f 6e 73 74 69 63 6b 79 20 74 29 29 0a 20 20 20 or-line).'rear-nonsticky.t))....
20ae0 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 6d 73 67 2d 73 74 61 72 74 20 28 70 6f 69 6e .....(set-marker.msg-start.(poin
20b00 74 29 29 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 t)).........(save-excursion.....
20b20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 ......(insert.(buffer-local-valu
20b40 65 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 6f 72 69 67 2d 62 75 e.'gptel--system-message.orig-bu
20b60 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 2d 6d 61 72 6b 20 6e 69 6c 20 27 6e 6f f))...........(push-mark.nil.'no
20b80 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 28 61 63 74 69 76 61 74 65 2d 6d 61 72 6b 29 29 0a 20 msg)).........(activate-mark))..
20ba0 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 .....(display-buffer.(current-bu
20bc0 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 64 ffer).......................`((d
20be0 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 62 65 6c 6f 77 2d 73 65 6c 65 63 74 65 64 29 0a 20 20 isplay-buffer-below-selected)...
20c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6f 64 79 2d 66 75 6e 63 ......................(body-func
20c20 74 69 6f 6e 20 2e 20 2c 23 27 73 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 tion...,#'select-window)........
20c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 6e 64 6f 77 2d 68 65 69 67 68 74 20 .................(window-height.
20c60 2e 20 2c 23 27 66 69 74 2d 77 69 6e 64 6f 77 2d 74 6f 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 ..,#'fit-window-to-buffer)))....
20c80 20 20 20 28 6c 65 74 20 28 28 71 75 69 74 2d 74 6f 2d 6d 65 6e 75 0a 20 20 20 20 20 20 20 20 20 ...(let.((quit-to-menu..........
20ca0 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 ....(lambda.()................(i
20cc0 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 63 61 nteractive)................(loca
20ce0 6c 2d 75 6e 73 65 74 2d 6b 65 79 20 28 6b 62 64 20 22 43 2d 63 20 43 2d 63 22 29 29 0a 20 20 20 l-unset-key.(kbd."C-c.C-c"))....
20d00 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 63 61 6c 2d 75 6e 73 65 74 2d 6b 65 79 20 28 6b 62 ............(local-unset-key.(kb
20d20 64 20 22 43 2d 63 20 43 2d 6b 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 71 75 d."C-c.C-k"))................(qu
20d40 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 73 70 6c it-window)................(displ
20d60 61 79 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 72 69 67 2d 62 ay-buffer.................orig-b
20d80 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 64 69 73 70 6c 61 79 2d 62 75 uf.................`((display-bu
20da0 66 66 65 72 2d 72 65 75 73 65 2d 77 69 6e 64 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffer-reuse-window...............
20dc0 20 20 20 20 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 75 73 65 2d 73 6f 6d 65 2d 77 69 6e .....display-buffer-use-some-win
20de0 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 6f 64 79 2d 66 75 6e dow)...................(body-fun
20e00 63 74 69 6f 6e 20 2e 20 2c 23 27 73 65 6c 65 63 74 2d 77 69 6e 64 6f 77 29 29 29 0a 20 20 20 20 ction...,#'select-window))).....
20e20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 72 61 63 74 69 76 65 6c 79 20 23 ...........(call-interactively.#
20e40 27 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 6f 63 61 6c 2d 73 'gptel-menu)))).........(local-s
20e60 65 74 2d 6b 65 79 20 28 6b 62 64 20 22 43 2d 63 20 43 2d 63 22 29 0a 20 20 20 20 20 20 20 20 20 et-key.(kbd."C-c.C-c")..........
20e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 ..............(lambda.()........
20ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a ..................(interactive).
20ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 .........................(let.((
20ee0 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 system-message..................
20f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 ...............(buffer-substring
20f20 20 6d 73 67 2d 73 74 61 72 74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 0a 20 20 20 20 20 20 .msg-start.(point-max)))).......
20f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 .....................(with-curre
20f60 6e 74 2d 62 75 66 66 65 72 20 6f 72 69 67 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 nt-buffer.orig-buf..............
20f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 65 74 2d 77 69 74 68 ................(gptel--set-with
20fa0 2d 73 63 6f 70 65 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 -scope.'gptel--system-message.sy
20fc0 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 stem-message....................
20fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
21000 20 67 70 74 65 6c 2d 2d 73 65 74 2d 62 75 66 66 65 72 2d 6c 6f 63 61 6c 6c 79 29 29 29 0a 20 20 .gptel--set-buffer-locally)))...
21020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 .......................(funcall.
21040 71 75 69 74 2d 74 6f 2d 6d 65 6e 75 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 6f 63 61 6c 2d 73 quit-to-menu))).........(local-s
21060 65 74 2d 6b 65 79 20 28 6b 62 64 20 22 43 2d 63 20 43 2d 6b 22 29 20 71 75 69 74 2d 74 6f 2d 6d et-key.(kbd."C-c.C-k").quit-to-m
21080 65 6e 75 29 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 78 65 73 20 66 6f 72 20 72 65 77 enu)))))..;;.**.Suffixes.for.rew
210a0 72 69 74 69 6e 67 2f 72 65 66 61 63 74 6f 72 69 6e 67 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 riting/refactoring..(transient-d
210c0 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 efine-suffix.gptel--suffix-rewri
210e0 74 65 20 28 29 0a 20 20 22 52 65 77 72 69 74 65 20 6f 72 20 72 65 66 61 63 74 6f 72 20 72 65 67 te.()..."Rewrite.or.refactor.reg
21100 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 2e 22 0a 20 20 3a 6b 65 79 20 22 72 22 0a 20 20 3a 64 65 73 ion.contents."...:key."r"...:des
21120 63 72 69 70 74 69 6f 6e 20 23 27 67 70 74 65 6c 2d 2d 72 65 66 61 63 74 6f 72 2d 6f 72 2d 72 65 cription.#'gptel--refactor-or-re
21140 77 72 69 74 65 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6c 65 74 2a 20 28 28 write...(interactive)...(let*.((
21160 70 72 6f 6d 70 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 prompt.(buffer-substring-no-prop
21180 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e erties...................(region
211a0 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 -beginning).(region-end)))......
211c0 20 20 20 20 28 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 ....(stream.gptel-stream).......
211e0 20 20 20 28 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d ...(gptel--system-message.gptel-
21200 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 72 65 -rewrite-message)).....(gptel-re
21220 71 75 65 73 74 20 70 72 6f 6d 70 74 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 29 29 29 0a 0a quest.prompt.:stream.stream)))..
21240 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 66 69 78 20 67 70 74 65 6c 2d 2d (transient-define-suffix.gptel--
21260 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 61 6e 64 2d 72 65 70 6c 61 63 65 20 28 29 0a 20 20 suffix-rewrite-and-replace.()...
21280 22 52 65 66 61 63 74 6f 72 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 20 61 6e 64 20 72 65 "Refactor.region.contents.and.re
212a0 70 6c 61 63 65 20 69 74 2e 22 0a 20 20 3a 6b 65 79 20 22 52 22 0a 20 20 3a 64 65 73 63 72 69 70 place.it."...:key."R"...:descrip
212c0 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 29 20 28 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 2d tion.(lambda.().(concat.(gptel--
212e0 72 65 66 61 63 74 6f 72 2d 6f 72 2d 72 65 77 72 69 74 65 29 20 22 20 69 6e 20 70 6c 61 63 65 22 refactor-or-rewrite).".in.place"
21300 29 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f ))...(interactive)...(let*.((pro
21320 6d 70 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 mpt.(buffer-substring-no-propert
21340 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 ies...................(region-be
21360 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 ginning).(region-end))).........
21380 20 28 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 .(stream.gptel-stream)..........
213a0 28 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 2d 72 65 (gptel--system-message.gptel--re
213c0 77 72 69 74 65 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 28 6b 69 6c 6c 2d 72 65 67 69 6f 6e write-message)).....(kill-region
213e0 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 .(region-beginning).(region-end)
21400 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 4f 72 69 67 69 6e 61 6c 20 74 65 78 74 20 73 61 ).....(message."Original.text.sa
21420 76 65 64 20 74 6f 20 6b 69 6c 6c 2d 72 69 6e 67 2e 22 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 72 ved.to.kill-ring.").....(gptel-r
21440 65 71 75 65 73 74 20 70 72 6f 6d 70 74 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 20 3a 69 6e equest.prompt.:stream.stream.:in
21460 2d 70 6c 61 63 65 20 74 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 -place.t)))..(transient-define-s
21480 75 66 66 69 78 20 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 72 65 77 72 69 74 65 2d 61 6e 64 2d uffix.gptel--suffix-rewrite-and-
214a0 65 64 69 66 66 20 28 61 72 67 73 29 0a 20 20 22 52 65 66 61 63 74 6f 72 69 6e 67 20 6f 72 20 72 ediff.(args)..."Refactoring.or.r
214c0 65 77 72 69 74 65 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 20 61 6e 64 20 72 75 6e 20 45 ewrite.region.contents.and.run.E
214e0 64 69 66 66 2e 22 0a 20 20 3a 6b 65 79 20 22 45 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e diff."...:key."E"...:description
21500 20 28 6c 61 6d 62 64 61 20 28 29 20 28 63 6f 6e 63 61 74 20 28 67 70 74 65 6c 2d 2d 72 65 66 61 .(lambda.().(concat.(gptel--refa
21520 63 74 6f 72 2d 6f 72 2d 72 65 77 72 69 74 65 29 20 22 20 61 6e 64 20 45 64 69 66 66 22 29 29 0a ctor-or-rewrite).".and.Ediff")).
21540 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 28 74 72 61 6e 73 69 65 6e 74 2d ..(interactive.(list.(transient-
21560 61 72 67 73 20 74 72 61 6e 73 69 65 6e 74 2d 63 75 72 72 65 6e 74 2d 63 6f 6d 6d 61 6e 64 29 29 args.transient-current-command))
21580 29 0a 20 20 28 6c 65 74 72 65 63 20 28 28 70 72 6f 6d 70 74 20 28 62 75 66 66 65 72 2d 73 75 62 )...(letrec.((prompt.(buffer-sub
215a0 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 string-no-properties............
215c0 20 20 20 20 20 20 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f .......(region-beginning).(regio
215e0 6e 2d 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 79 73 74 n-end)))............(gptel--syst
21600 65 6d 2d 6d 65 73 73 61 67 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 em-message.gptel--rewrite-messag
21620 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 54 65 63 68 6e 69 63 61 6c e)............;;.TODO:.Technical
21640 6c 79 20 77 65 20 73 68 6f 75 6c 64 20 73 61 76 65 20 74 68 65 20 77 69 6e 64 6f 77 20 63 6f 6e ly.we.should.save.the.window.con
21660 66 69 67 20 61 74 20 74 68 65 20 74 69 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 60 65 fig.at.the.time............;;.`e
21680 64 69 66 66 2d 73 65 74 75 70 2d 68 6f 6f 6b 27 20 72 75 6e 73 2c 20 62 75 74 20 74 68 69 73 20 diff-setup-hook'.runs,.but.this.
216a0 77 69 6c 6c 20 64 6f 20 66 6f 72 20 6e 6f 77 2e 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 77 63 will.do.for.now.............(cwc
216c0 20 28 63 75 72 72 65 6e 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 29 29 .(current-window-configuration))
216e0 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 ............(gptel--ediff-restor
21700 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 20 e.............(lambda.()........
21720 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 77 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 .......(when.(window-configurati
21740 6f 6e 2d 70 20 63 77 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 77 on-p.cwc).................(set-w
21760 69 6e 64 6f 77 2d 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 77 63 29 29 0a 20 20 20 20 20 20 indow-configuration.cwc)).......
21780 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 ........(remove-hook.'ediff-quit
217a0 2d 68 6f 6f 6b 20 67 70 74 65 6c 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 29 29 29 0a 20 -hook.gptel--ediff-restore))))..
217c0 20 20 20 28 6d 65 73 73 61 67 65 20 22 57 61 69 74 69 6e 67 20 66 6f 72 20 72 65 73 70 6f 6e 73 ...(message."Waiting.for.respons
217e0 65 2e 2e 2e 20 22 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 72 65 71 75 65 73 74 0a 20 20 20 20 20 e....").....(gptel-request......
21800 70 72 6f 6d 70 74 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 20 28 63 6f 6e 73 20 28 72 65 67 69 prompt......:context.(cons.(regi
21820 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 on-beginning).(region-end)).....
21840 20 3a 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 72 65 73 70 6f 6e 73 .:callback......(lambda.(respons
21860 65 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 72 65 73 70 6f 6e 73 65 e.info)........(if.(not.response
21880 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 43 68 61 74 47 50 54 20 72 )............(message."ChatGPT.r
218a0 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a 20 25 73 22 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e esponse.error:.%s".(plist-get.in
218c0 66 6f 20 3a 73 74 61 74 75 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 67 70 fo.:status))..........(let*.((gp
218e0 74 65 6c 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 tel-buffer.(plist-get.info.:buff
21900 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 6f 75 6e er)).................(gptel-boun
21920 64 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 6f 6e 74 65 78 74 29 29 0a 20 20 ds.(plist-get.info.:context))...
21940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6d 6f 64 65 0a 20 20 20 20 20 ..............(buffer-mode......
21960 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 ............(buffer-local-value.
21980 27 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 'major-mode.gptel-buffer))).....
219a0 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 6e 65 77 2d 62 75 66 20 2c .......(pcase-let.((`(,new-buf.,
219c0 6e 65 77 2d 62 65 67 20 2c 6e 65 77 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 new-beg.,new-end)...............
219e0 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 ..........(with-current-buffer.(
21a00 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 67 70 74 65 6c 2d 72 65 77 72 69 74 get-buffer-create."*gptel-rewrit
21a20 65 2d 52 65 67 69 6f 6e 2e 42 2d 2a 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e-Region.B-*")..................
21a40 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 68 69 62 69 74 2d 72 65 61 64 2d 6f 6e 6c .........(let.((inhibit-read-onl
21a60 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 y.t))...........................
21a80 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(erase-buffer)................
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 62 75 66 66 65 72 2d 6d 6f 64 .............(funcall.buffer-mod
21ac0 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 e).............................(
21ae0 69 6e 73 65 72 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 insert.response)................
21b00 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d .............(goto-char.(point-m
21b20 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in))............................
21b40 20 28 6c 69 73 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f 69 6e 74 2d 6d .(list.(current-buffer).(point-m
21b60 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 in).(point-max))))))............
21b80 20 20 28 72 65 71 75 69 72 65 20 27 65 64 69 66 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..(require.'ediff)..............
21ba0 28 61 64 64 2d 68 6f 6f 6b 20 27 65 64 69 66 66 2d 71 75 69 74 2d 68 6f 6f 6b 20 67 70 74 65 6c (add-hook.'ediff-quit-hook.gptel
21bc0 2d 2d 65 64 69 66 66 2d 72 65 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 --ediff-restore)..............(a
21be0 70 70 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 65 64 69 66 66 2d 72 65 67 69 6f pply...............#'ediff-regio
21c00 6e 73 2d 69 6e 74 65 72 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 ns-internal...............(get-b
21c20 75 66 66 65 72 20 28 65 64 69 66 66 2d 6d 61 6b 65 2d 63 6c 6f 6e 65 64 2d 62 75 66 66 65 72 20 uffer.(ediff-make-cloned-buffer.
21c40 67 70 74 65 6c 2d 62 75 66 66 65 72 20 22 2d 52 65 67 69 6f 6e 2e 41 2d 22 29 29 0a 20 20 20 20 gptel-buffer."-Region.A-")).....
21c60 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 67 70 74 65 6c 2d 62 6f 75 6e 64 73 29 20 28 63 64 ..........(car.gptel-bounds).(cd
21c80 72 20 67 70 74 65 6c 2d 62 6f 75 6e 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 r.gptel-bounds)...............ne
21ca0 77 2d 62 75 66 20 6e 65 77 2d 62 65 67 20 6e 65 77 2d 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 w-buf.new-beg.new-end...........
21cc0 20 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 74 72 61 6e 73 ....nil...............(if.(trans
21ce0 69 65 6e 74 2d 61 72 67 2d 76 61 6c 75 65 20 22 2d 77 22 20 61 72 67 73 29 0a 20 20 20 20 20 20 ient-arg-value."-w".args).......
21d00 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 ............(list.'ediff-regions
21d20 2d 77 6f 72 64 77 69 73 65 20 27 77 6f 72 64 2d 77 69 73 65 20 6e 69 6c 29 0a 20 20 20 20 20 20 -wordwise.'word-wise.nil).......
21d40 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 6c ..........(list.'ediff-regions-l
21d60 69 6e 65 77 69 73 65 20 6e 69 6c 20 6e 69 6c 29 29 29 29 29 29 29 29 29 29 0a 0a 28 70 72 6f 76 inewise.nil.nil))))))))))..(prov
21d80 69 64 65 20 27 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d ide.'gptel-transient).;;;.gptel-
21da0 74 72 61 6e 73 69 65 6e 74 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 3b 3b 20 4c 6f 63 61 6c transient.el.ends.here..;;.Local
21dc0 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 6f 75 74 6c 69 6e 65 2d 72 65 67 65 78 70 3a 20 22 .Variables:.;;.outline-regexp:."
21de0 5e 3b 3b 20 5c 5c 2a 2b 22 0a 3b 3b 20 65 76 61 6c 3a 20 28 6f 75 74 6c 69 6e 65 2d 6d 69 6e 6f ^;;.\\*+".;;.eval:.(outline-mino
21e00 72 2d 6d 6f 64 65 20 31 29 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r-mode.1).;;.End:...............
21e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
21fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22000 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 61 6e 74 68 72 6f gptel-20240424.2306/gptel-anthro
22020 70 69 63 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 pic.el..........................
22040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
22080 30 30 31 33 34 35 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 35 34 35 00 20 30 00 00 00 0013450.00000000000.015545..0...
220a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
220c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
220e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
22120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
22140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
221a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
221c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
221e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
22200 3b 3b 3b 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 2e 65 6c 20 2d 2d 2d 20 20 41 6e 74 68 ;;;.gptel-anthropic.el.---..Anth
22220 72 6f 70 69 63 20 41 49 20 73 75 70 70 70 6f 72 74 20 66 6f 72 20 67 70 74 65 6c 20 20 2d 2a 2d ropic.AI.suppport.for.gptel..-*-
22240 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 .lexical-binding:.t;.-*-..;;.Cop
22260 79 72 69 67 68 74 20 28 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 yright.(C).2023..Karthik.Chikmag
22280 61 6c 75 72 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 alur..;;.Author:.Karthik.Chikmag
222a0 61 6c 75 72 20 3c 6b 61 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 alur.<karthikchikmagalur@gmail.c
222c0 6f 6d 3e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 om>..;;.This.program.is.free.sof
222e0 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 tware;.you.can.redistribute.it.a
22300 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 nd/or.modify.;;.it.under.the.ter
22320 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 ms.of.the.GNU.General.Public.Lic
22340 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 ense.as.published.by.;;.the.Free
22360 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 .Software.Foundation,.either.ver
22380 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 sion.3.of.the.License,.or.;;.(at
223a0 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e .your.option).any.later.version.
223c0 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 ..;;.This.program.is.distributed
223e0 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 .in.the.hope.that.it.will.be.use
22400 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 ful,.;;.but.WITHOUT.ANY.WARRANTY
22420 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 ;.without.even.the.implied.warra
22440 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 nty.of.;;.MERCHANTABILITY.or.FIT
22460 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 NESS.FOR.A.PARTICULAR.PURPOSE...
22480 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 See.the.;;.GNU.General.Public.Li
224a0 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 cense.for.more.details...;;.You.
224c0 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 should.have.received.a.copy.of.t
224e0 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b he.GNU.General.Public.License.;;
22500 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f .along.with.this.program...If.no
22520 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 t,.see.<https://www.gnu.org/lice
22540 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 nses/>...;;;.Commentary:..;;.Thi
22560 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70 70 6f 72 74 20 66 6f 72 20 41 6e 74 68 72 6f 70 69 s.file.adds.support.for.Anthropi
22580 63 27 73 20 4d 65 73 73 61 67 65 73 20 41 50 49 20 74 6f 20 67 70 74 65 6c 0a 0a 3b 3b 3b 20 43 c's.Messages.API.to.gptel..;;;.C
225a0 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 28 65 76 61 6c ode:.(require.'cl-generic).(eval
225c0 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 0a 20 20 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 -when-compile...(require.'cl-lib
225e0 29 29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 70 29 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 )).(require.'map).(require.'gpte
22600 6c 29 0a 0a 28 64 65 66 76 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 28 l)..(defvar.json-object-type)..(
22620 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c 75 declare-function.prop-match-valu
22640 65 20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22 29 0a 28 64 65 63 6c 61 e."text-property-search").(decla
22660 72 65 2d 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 re-function.text-property-search
22680 2d 62 61 63 6b 77 61 72 64 20 22 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 22 -backward."text-property-search"
226a0 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a ).(declare-function.json-read."j
226c0 73 6f 6e 22 20 28 29 29 0a 0a 3b 3b 3b 20 41 6e 74 68 72 6f 70 69 63 20 28 4d 65 73 73 61 67 65 son".())..;;;.Anthropic.(Message
226e0 73 20 41 50 49 29 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 61 6e 74 68 s.API).(cl-defstruct.(gptel-anth
22700 72 6f 70 69 63 20 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d ropic.(:constructor.gptel--make-
22720 61 6e 74 68 72 6f 70 69 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 anthropic)......................
22740 20 20 20 20 20 20 20 20 20 20 28 3a 63 6f 70 69 65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 ..........(:copier.nil).........
22760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a 69 6e 63 6c 75 64 65 .......................(:include
22780 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 .gptel-backend)))..(cl-defmethod
227a0 20 67 70 74 65 6c 2d 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 20 28 28 5f 62 61 63 .gptel-curl--parse-stream.((_bac
227c0 6b 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 5f 69 6e 66 6f 29 0a 20 20 28 kend.gptel-anthropic)._info)...(
227e0 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 0a 20 20 20 20 20 20 20 20 20 28 70 let*.((content-strs)..........(p
22800 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 t.(point))).....(condition-case.
22820 6e 69 6c 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f nil.........(while.(re-search-fo
22840 72 77 61 72 64 20 22 5e 65 76 65 6e 74 3a 20 22 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 rward."^event:.".nil.t).........
22860 20 20 28 73 65 74 71 20 70 74 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 0a ..(setq.pt.(match-beginning.0)).
22880 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 ..........(if.(equal.(line-end-p
228a0 6f 73 69 74 69 6f 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 osition).(point-max))...........
228c0 20 20 20 20 28 65 72 72 6f 72 20 22 44 61 74 61 20 62 6c 6f 63 6b 20 69 6e 63 6f 6d 70 6c 65 74 ....(error."Data.block.incomplet
228e0 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 e"))...........(when.(looking-at
22900 20 22 63 6f 6e 74 65 6e 74 5f 62 6c 6f 63 6b 5f 5c 5c 28 3f 3a 73 74 61 72 74 5c 5c 7c 64 65 6c ."content_block_\\(?:start\\|del
22920 74 61 5c 5c 7c 73 74 6f 70 5c 5c 29 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 ta\\|stop\\)").............(forw
22940 61 72 64 2d 6c 69 6e 65 20 31 29 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 35 29 0a 20 20 20 ard-line.1).(forward-char.5)....
22960 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 2a 20 28 28 72 65 73 70 6f 6e 73 65 20 28 .........(when-let*.((response.(
22980 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel--json-read))..............
229a0 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d ...........(content.(map-nested-
229c0 65 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 elt.............................
229e0 20 20 20 20 20 20 72 65 73 70 6f 6e 73 65 20 27 28 3a 64 65 6c 74 61 20 3a 74 65 78 74 29 29 29 ......response.'(:delta.:text)))
22a00 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 20 63 6f 6e 74 65 6e 74 20 63 6f )...............(push.content.co
22a20 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 67 6f 74 ntent-strs)))).......(error.(got
22a40 6f 2d 63 68 61 72 20 70 74 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 o-char.pt))).....(apply.#'concat
22a60 20 28 6e 72 65 76 65 72 73 65 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 0a 28 63 6c .(nreverse.content-strs))))..(cl
22a80 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 -defmethod.gptel--parse-response
22aa0 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 72 65 73 .((_backend.gptel-anthropic).res
22ac0 70 6f 6e 73 65 20 5f 69 6e 66 6f 29 0a 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 ponse._info)...(map-nested-elt.r
22ae0 65 73 70 6f 6e 73 65 20 27 28 3a 63 6f 6e 74 65 6e 74 20 30 20 3a 74 65 78 74 29 29 29 0a 0a 28 esponse.'(:content.0.:text)))..(
22b00 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 cl-defmethod.gptel--request-data
22b20 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 70 72 6f .((_backend.gptel-anthropic).pro
22b40 6d 70 74 73 29 0a 20 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54 53 20 66 6f 72 mpts)..."JSON.encode.PROMPTS.for
22b60 20 73 65 6e 64 69 6e 67 20 74 6f 20 43 68 61 74 47 50 54 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 .sending.to.ChatGPT."...(let.((p
22b80 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a 6d 6f 64 65 6c 20 2c rompts-plist..........`(:model.,
22ba0 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 79 73 74 65 6d 20 2c gptel-model............:system.,
22bc0 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 gptel--system-message...........
22be0 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 20 28 61 6e 64 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 .:stream.,(or.(and.gptel-stream.
22c00 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 gptel-use-curl..................
22c20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 73 74 72 65 61 6d 20 67 70 ........(gptel-backend-stream.gp
22c40 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tel-backend))...................
22c60 20 20 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 61 78 5f ...:json-false)............:max_
22c80 74 6f 6b 65 6e 73 20 2c 28 6f 72 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 31 30 32 tokens.,(or.gptel-max-tokens.102
22ca0 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 73 73 61 67 65 73 20 5b 2c 40 70 72 6f 6d 70 4)............:messages.[,@promp
22cc0 74 73 5d 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 ts]))).....(when.gptel-temperatu
22ce0 72 65 0a 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 re.......(plist-put.prompts-plis
22d00 74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 t.:temperature.gptel-temperature
22d20 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 29 29 0a 0a 28 63 6c 2d 64 65 66 6d )).....prompts-plist))..(cl-defm
22d40 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 20 28 28 5f 62 61 63 ethod.gptel--parse-buffer.((_bac
22d60 6b 65 6e 64 20 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 69 63 29 20 26 6f 70 74 69 6f 6e 61 6c 20 kend.gptel-anthropic).&optional.
22d80 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 29 20 28 max-entries)...(let.((prompts).(
22da0 70 72 6f 70 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 prop)).....(while.(and..........
22dc0 20 20 20 28 6f 72 20 28 6e 6f 74 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 20 28 3e 3d 20 6d 61 78 ...(or.(not.max-entries).(>=.max
22de0 2d 65 6e 74 72 69 65 73 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 -entries.0)).............(setq.p
22e00 72 6f 70 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 63 68 2d 62 61 63 6b 77 61 rop.(text-property-search-backwa
22e20 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 rd.........................'gpte
22e40 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 l.'response.....................
22e60 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f 70 65 72 74 79 20 28 6d 61 ....(when.(get-char-property.(ma
22e80 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 x.(point-min).(1-.(point))).....
22ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
22ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 .............'gptel)............
22ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 29 29 29 0a 20 20 20 20 20 20 28 70 75 73 68 ...............t)))).......(push
22f00 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 28 69 66 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 76 61 6c .(list.:role.(if.(prop-match-val
22f20 75 65 20 70 72 6f 70 29 20 22 61 73 73 69 73 74 61 6e 74 22 20 22 75 73 65 72 22 29 0a 20 20 20 ue.prop)."assistant"."user")....
22f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 ...............:content.........
22f60 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a 20 20 20 20 20 20 20 20 20 ..........(string-trim..........
22f80 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 ..........(buffer-substring-no-p
22fa0 72 6f 70 65 72 74 69 65 73 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 roperties.(prop-match-beginning.
22fc0 70 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 prop)...........................
22fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d .........................(prop-m
23000 61 74 63 68 2d 65 6e 64 20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 atch-end.prop)).................
23020 20 20 20 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 ...(format."[\t\r\n.]*\\(?:%s\\)
23040 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ?[\t\r\n.]*"....................
23060 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 6c 2d 70 72 6f ........(regexp-quote.(gptel-pro
23080 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 mpt-prefix-string)))............
230a0 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c 5c 28 3f 3a ........(format."[\t\r\n.]*\\(?:
230c0 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 %s\\)?[\t\r\n.]*"...............
230e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 67 70 74 65 .............(regexp-quote.(gpte
23100 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 29 29 0a 20 20 l-response-prefix-string)))))...
23120 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 28 61 6e 64 20 6d 61 ..........prompts).......(and.ma
23140 78 2d 65 6e 74 72 69 65 73 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 x-entries.(cl-decf.max-entries))
23160 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a ).....prompts))..;;;###autoload.
23180 28 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 0a 20 (cl-defun.gptel-make-anthropic..
231a0 20 20 20 28 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 73 74 72 65 61 6d 20 6b ...(name.&key.curl-args.stream.k
231c0 65 79 0a 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 ey...........(header............
231e0 28 6c 61 6d 62 64 61 20 28 29 20 28 77 68 65 6e 2d 6c 65 74 20 28 6b 65 79 20 28 67 70 74 65 6c (lambda.().(when-let.(key.(gptel
23200 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 --get-api-key)).................
23220 20 20 20 20 20 20 20 20 60 28 28 22 78 2d 61 70 69 2d 6b 65 79 22 20 2e 20 2c 6b 65 79 29 0a 20 ........`(("x-api-key"...,key)..
23240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 61 6e 74 68 72 .........................("anthr
23260 6f 70 69 63 2d 76 65 72 73 69 6f 6e 22 20 2e 20 22 32 30 32 33 2d 30 36 2d 30 31 22 29 29 29 29 opic-version"..."2023-06-01"))))
23280 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 6f 64 65 6c 73 20 27 28 22 63 6c 61 75 64 65 2d 33 2d )...........(models.'("claude-3-
232a0 73 6f 6e 6e 65 74 2d 32 30 32 34 30 32 32 39 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sonnet-20240229"................
232c0 20 20 20 20 20 22 63 6c 61 75 64 65 2d 33 2d 68 61 69 6b 75 2d 32 30 32 34 30 33 30 37 22 0a 20 ....."claude-3-haiku-20240307"..
232e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6c 61 75 64 65 2d 33 2d 6f 70 75 ..................."claude-3-opu
23300 73 2d 32 30 32 34 30 32 32 39 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 61 s-20240229"))...........(host."a
23320 70 69 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f 6d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 pi.anthropic.com")...........(pr
23340 6f 74 6f 63 6f 6c 20 22 68 74 74 70 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f otocol."https")...........(endpo
23360 69 6e 74 20 22 2f 76 31 2f 6d 65 73 73 61 67 65 73 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 int."/v1/messages"))..."Register
23380 20 61 6e 20 41 6e 74 68 72 6f 70 69 63 20 41 50 49 2d 63 6f 6d 70 61 74 69 62 6c 65 20 62 61 63 .an.Anthropic.API-compatible.bac
233a0 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e 0a 0a 4b 65 79 77 6f kend.for.gptel.with.NAME...Keywo
233c0 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 28 6f 70 74 69 6f 6e rd.arguments:..CURL-ARGS.(option
233e0 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 75 72 6c al).is.a.list.of.additional.Curl
23400 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 .arguments...HOST.(optional).is.
23420 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 5c 22 61 70 69 2e 61 6e 74 68 72 6f 70 69 63 2e 63 6f the.API.host,.\"api.anthropic.co
23440 6d 5c 22 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 4d 4f 44 45 4c 53 20 69 73 20 61 20 6c 69 73 m\".by.default...MODELS.is.a.lis
23460 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 73 2e 0a 0a 53 54 52 t.of.available.model.names...STR
23480 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c 65 20 73 74 72 65 61 EAM.is.a.boolean.to.toggle.strea
234a0 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 66 61 6c 73 ming.responses,.defaults.to.fals
234c0 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 70 65 63 69 66 69 65 e...PROTOCOL.(optional).specifie
234e0 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 73 20 62 79 20 64 65 66 61 75 6c 74 s.the.protocol,.https.by.default
23500 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 74 68 65 20 41 50 ...ENDPOINT.(optional).is.the.AP
23520 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 2c 20 64 65 66 61 I.endpoint.for.completions,.defa
23540 75 6c 74 73 20 74 6f 0a 5c 22 2f 76 31 2f 6d 65 73 73 61 67 65 73 5c 22 2e 0a 0a 48 45 41 44 45 ults.to.\"/v1/messages\"...HEADE
23560 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 68 R.(optional).is.for.additional.h
23580 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 eaders.to.send.with.each.request
235a0 2e 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 6f 72 20 61 20 66 75 6e ..It.should.be.an.alist.or.a.fun
235c0 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 73 74 2c 20 6c 69 6b 65 ction.that.retuns.an.alist,.like
235e0 3a 0a 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 61 70 70 6c 69 63 61 :.((\"Content-Type\"...\"applica
23600 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 tion/json\"))..KEY.is.a.variable
23620 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 20 .whose.value.is.the.API.key,.or.
23640 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 0a 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 22 0a function.that.returns.the.key.".
23660 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 ..(declare.(indent.1))...(let.((
23680 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 61 6e 74 68 72 6f 70 69 63 0a 20 backend.(gptel--make-anthropic..
236a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 75 72 6c 2d 61 72 67 73 20 63 75 72 6c .................:curl-args.curl
236c0 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 -args...................:name.na
236e0 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a me...................:host.host.
23700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 20 68 65 61 64 65 72 ..................:header.header
23720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 ...................:key.key.....
23740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 6c 73 20 6d 6f 64 65 6c 73 0a 20 20 20 ..............:models.models....
23760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f ...............:protocol.protoco
23780 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e l...................:endpoint.en
237a0 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d dpoint...................:stream
237c0 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 72 6c 20 28 .stream...................:url.(
237e0 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 if.protocol.....................
23800 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f .......(concat.protocol."://".ho
23820 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 st.endpoint)....................
23840 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 29 29 29 29 ......(concat.host.endpoint)))))
23860 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 66 20 .....(prog1.backend.......(setf.
23880 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 (alist-get.name.gptel--known-bac
238a0 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c kends........................nil
238c0 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .nil.#'equal)...................
238e0 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 61 6e 74 backend))))..(provide.'gptel-ant
23900 68 72 6f 70 69 63 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 73 2e 65 6c 20 65 6e hropic).;;;.gptel-backends.el.en
23920 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ds.here.........................
23940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
239e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23a00 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 70 6b 67 2e 65 6c gptel-20240424.2306/gptel-pkg.el
23a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
23a80 30 30 30 30 36 37 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 34 36 00 20 30 00 00 00 0000677.00000000000.014346..0...
23aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23b00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
23b20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
23b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23c00 28 64 65 66 69 6e 65 2d 70 61 63 6b 61 67 65 20 22 67 70 74 65 6c 22 20 22 32 30 32 34 30 34 32 (define-package."gptel"."2024042
23c20 34 2e 32 33 30 36 22 20 22 49 6e 74 65 72 61 63 74 20 77 69 74 68 20 43 68 61 74 47 50 54 20 6f 4.2306"."Interact.with.ChatGPT.o
23c40 72 20 6f 74 68 65 72 20 4c 4c 4d 73 22 0a 20 20 27 28 28 65 6d 61 63 73 20 22 32 37 2e 31 22 29 r.other.LLMs"...'((emacs."27.1")
23c60 0a 20 20 20 20 28 74 72 61 6e 73 69 65 6e 74 20 22 30 2e 34 2e 30 22 29 0a 20 20 20 20 28 63 6f .....(transient."0.4.0").....(co
23c80 6d 70 61 74 20 22 32 39 2e 31 2e 34 2e 31 22 29 29 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 34 34 66 mpat."29.1.4.1"))...:commit."44f
23ca0 65 62 31 36 33 37 66 61 35 37 38 36 38 33 38 32 63 33 61 63 66 31 63 36 34 38 65 32 34 65 39 38 eb1637fa57868382c3acf1c648e24e98
23cc0 34 65 37 30 34 22 20 3a 61 75 74 68 6f 72 73 0a 20 20 27 28 28 22 4b 61 72 74 68 69 6b 20 43 68 4e704".:authors...'(("Karthik.Ch
23ce0 69 6b 6d 61 67 61 6c 75 72 22 29 29 0a 20 20 3a 6d 61 69 6e 74 61 69 6e 65 72 73 0a 20 20 27 28 ikmagalur"))...:maintainers...'(
23d00 28 22 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 22 29 29 0a 20 20 3a 6d 61 69 6e ("Karthik.Chikmagalur"))...:main
23d20 74 61 69 6e 65 72 0a 20 20 27 28 22 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 22 tainer...'("Karthik.Chikmagalur"
23d40 29 0a 20 20 3a 6b 65 79 77 6f 72 64 73 0a 20 20 27 28 22 63 6f 6e 76 65 6e 69 65 6e 63 65 22 29 )...:keywords...'("convenience")
23d60 0a 20 20 3a 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 61 72 74 ...:url."https://github.com/kart
23d80 68 69 6e 6b 2f 67 70 74 65 6c 22 29 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a hink/gptel").;;.Local.Variables:
23da0 0a 3b 3b 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 0a 3b 3b 20 45 6e 64 3a 0a 00 .;;.no-byte-compile:.t.;;.End:..
23dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23e00 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 6f 72 67 2e 65 6c gptel-20240424.2306/gptel-org.el
23e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23e60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
23e80 30 30 34 34 34 30 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 33 35 33 00 20 30 00 00 00 0044407.00000000000.014353..0...
23ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23f00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
23f20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
23f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
23fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
24000 3b 3b 3b 20 67 70 74 65 6c 2d 6f 72 67 2e 65 6c 20 2d 2d 2d 20 4f 72 67 20 66 75 6e 63 74 69 6f ;;;.gptel-org.el.---.Org.functio
24020 6e 73 20 66 6f 72 20 67 70 74 65 6c 20 20 20 20 20 20 20 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c ns.for.gptel.........-*-.lexical
24040 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 -binding:.t;.-*-..;;.Copyright.(
24060 43 29 20 32 30 32 34 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2024..Karthik.Chikmagalur..;;
24080 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 .Author:.Karthik.Chikmagalur.<ka
240a0 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4b rthikchikmagalur@gmail.com>.;;.K
240c0 65 79 77 6f 72 64 73 3a 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 eywords:..;;.This.program.is.fre
240e0 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 e.software;.you.can.redistribute
24100 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 .it.and/or.modify.;;.it.under.th
24120 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 e.terms.of.the.GNU.General.Publi
24140 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 c.License.as.published.by.;;.the
24160 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 .Free.Software.Foundation,.eithe
24180 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b r.version.3.of.the.License,.or.;
241a0 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 ;.(at.your.option).any.later.ver
241c0 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 sion...;;.This.program.is.distri
241e0 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 buted.in.the.hope.that.it.will.b
24200 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 e.useful,.;;.but.WITHOUT.ANY.WAR
24220 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 RANTY;.without.even.the.implied.
24240 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f warranty.of.;;.MERCHANTABILITY.o
24260 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f r.FITNESS.FOR.A.PARTICULAR.PURPO
24280 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c SE...See.the.;;.GNU.General.Publ
242a0 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b ic.License.for.more.details...;;
242c0 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 .You.should.have.received.a.copy
242e0 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e .of.the.GNU.General.Public.Licen
24300 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 se.;;.along.with.this.program...
24320 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 If.not,.see.<https://www.gnu.org
24340 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b /licenses/>...;;;.Commentary:..;
24360 3b 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 20 ;..;;;.Code:.(eval-when-compile.
24380 28 72 65 71 75 69 72 65 20 27 63 6c 2d 6c 69 62 29 29 0a 28 72 65 71 75 69 72 65 20 27 6f 72 67 (require.'cl-lib)).(require.'org
243a0 2d 65 6c 65 6d 65 6e 74 29 0a 28 72 65 71 75 69 72 65 20 27 6f 75 74 6c 69 6e 65 29 0a 0a 28 64 -element).(require.'outline)..(d
243c0 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 eclare-function.org-element-begi
243e0 6e 20 22 6f 72 67 2d 65 6c 65 6d 65 6e 74 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 n."org-element").(declare-functi
24400 6f 6e 20 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 2d 6d 61 70 20 22 6f 72 67 2d on.org-element-lineage-map."org-
24420 65 6c 65 6d 65 6e 74 2d 61 73 74 22 29 0a 0a 3b 3b 20 46 75 6e 63 74 69 6f 6e 73 20 75 73 65 64 element-ast")..;;.Functions.used
24440 20 66 6f 72 20 73 61 76 69 6e 67 2f 72 65 73 74 6f 72 69 6e 67 20 67 70 74 65 6c 20 73 74 61 74 .for.saving/restoring.gptel.stat
24460 65 20 69 6e 20 4f 72 67 20 62 75 66 66 65 72 73 0a 28 64 65 66 76 61 72 20 6f 72 67 2d 65 6e 74 e.in.Org.buffers.(defvar.org-ent
24480 72 79 2d 70 72 6f 70 65 72 74 79 2d 69 6e 68 65 72 69 74 65 64 2d 66 72 6f 6d 29 0a 28 64 65 63 ry-property-inherited-from).(dec
244a0 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 6e 74 72 79 2d 67 65 74 20 22 6f 72 67 lare-function.org-entry-get."org
244c0 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 65 6e 74 72 79 2d 70 ").(declare-function.org-entry-p
244e0 75 74 20 22 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d ut."org").(declare-function.org-
24500 77 69 74 68 2d 77 69 64 65 2d 62 75 66 66 65 72 20 22 6f 72 67 2d 6d 61 63 73 22 29 0a 28 64 65 with-wide-buffer."org-macs").(de
24520 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 79 20 clare-function.org-set-property.
24540 22 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 70 72 6f "org").(declare-function.org-pro
24560 70 65 72 74 79 2d 76 61 6c 75 65 73 20 22 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e perty-values."org").(declare-fun
24580 63 74 69 6f 6e 20 6f 72 67 2d 6f 70 65 6e 2d 6c 69 6e 65 20 22 6f 72 67 22 29 0a 28 64 65 63 6c ction.org-open-line."org").(decl
245a0 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 61 74 2d 68 65 61 64 69 6e 67 2d 70 20 22 6f are-function.org-at-heading-p."o
245c0 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 6f 72 67 2d 67 65 74 2d 68 rg").(declare-function.org-get-h
245e0 65 61 64 69 6e 67 20 22 6f 72 67 22 29 0a 28 64 65 63 6c 61 72 65 2d 66 75 6e 63 74 69 6f 6e 20 eading."org").(declare-function.
24600 6f 72 67 2d 61 74 2d 68 65 61 64 69 6e 67 2d 70 20 22 6f 72 67 22 29 0a 0a 0c 0a 3b 3b 3b 20 55 org-at-heading-p."org")....;;;.U
24620 73 65 72 20 6f 70 74 69 6f 6e 73 0a 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 6f 72 67 ser.options.(defcustom.gptel-org
24640 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 20 6e 69 6c 0a 20 20 22 55 73 65 20 74 68 -branching-context.nil..."Use.th
24660 65 20 6c 69 6e 65 61 67 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 e.lineage.of.the.current.heading
24680 20 61 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 66 6f 72 20 67 70 74 65 6c 20 69 6e 20 4f 72 67 .as.the.context.for.gptel.in.Org
246a0 20 62 75 66 66 65 72 73 2e 0a 0a 54 68 69 73 20 6d 61 6b 65 73 20 65 61 63 68 20 73 61 6d 65 20 .buffers...This.makes.each.same.
246c0 6c 65 76 65 6c 20 68 65 61 64 69 6e 67 20 61 20 73 65 70 61 72 61 74 65 20 63 6f 6e 76 65 72 73 level.heading.a.separate.convers
246e0 61 74 69 6f 6e 0a 62 72 61 6e 63 68 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 2c 20 67 70 74 65 6c ation.branch...By.default,.gptel
24700 20 75 73 65 73 20 61 20 6c 69 6e 65 61 72 20 63 6f 6e 74 65 78 74 3a 20 61 6c 6c 20 74 68 65 20 .uses.a.linear.context:.all.the.
24720 74 65 78 74 20 75 70 20 74 6f 20 74 68 65 0a 63 75 72 73 6f 72 20 69 73 20 73 65 6e 74 20 74 6f text.up.to.the.cursor.is.sent.to
24740 20 74 68 65 20 4c 4c 4d 2e 20 20 45 6e 61 62 6c 69 6e 67 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 .the.LLM...Enabling.this.option.
24760 6d 61 6b 65 73 20 74 68 65 0a 63 6f 6e 74 65 78 74 20 74 68 65 20 68 69 65 72 61 72 63 68 69 63 makes.the.context.the.hierarchic
24780 61 6c 20 6c 69 6e 65 61 67 65 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 4f 72 67 20 68 65 al.lineage.of.the.current.Org.he
247a0 61 64 69 6e 67 2e 20 20 49 6e 0a 74 68 69 73 20 65 78 61 6d 70 6c 65 3a 0a 0a 2d 2d 2d 2d 2d 0a ading...In.this.example:..-----.
247c0 54 6f 70 20 6c 65 76 65 6c 20 74 65 78 74 0a 0a 2a 20 48 65 61 64 69 6e 67 20 31 0a 68 65 61 64 Top.level.text..*.Heading.1.head
247e0 69 6e 67 20 31 20 74 65 78 74 0a 0a 2a 20 48 65 61 64 69 6e 67 20 32 0a 68 65 61 64 69 6e 67 20 ing.1.text..*.Heading.2.heading.
24800 32 20 74 65 78 74 0a 0a 2a 2a 20 48 65 61 64 69 6e 67 20 32 2e 31 0a 68 65 61 64 69 6e 67 20 32 2.text..**.Heading.2.1.heading.2
24820 2e 31 20 74 65 78 74 0a 2a 2a 20 48 65 61 64 69 6e 67 20 32 2e 32 0a 68 65 61 64 69 6e 67 20 32 .1.text.**.Heading.2.2.heading.2
24840 2e 32 20 74 65 78 74 0a 2d 2d 2d 2d 2d 0a 0a 57 69 74 68 20 74 68 65 20 63 75 72 73 6f 72 20 61 .2.text.-----..With.the.cursor.a
24860 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 2c 20 74 68 65 20 74 65 78 t.the.end.of.the.buffer,.the.tex
24880 74 20 73 65 6e 74 20 74 6f 20 74 68 65 0a 4c 4c 4d 20 77 69 6c 6c 20 62 65 20 6c 69 6d 69 74 65 t.sent.to.the.LLM.will.be.limite
248a0 64 20 74 6f 0a 0a 2d 2d 2d 2d 2d 0a 54 6f 70 20 6c 65 76 65 6c 20 74 65 78 74 0a 0a 2a 20 48 65 d.to..-----.Top.level.text..*.He
248c0 61 64 69 6e 67 20 32 0a 68 65 61 64 69 6e 67 20 32 20 74 65 78 74 0a 0a 2a 2a 20 48 65 61 64 69 ading.2.heading.2.text..**.Headi
248e0 6e 67 20 32 2e 32 0a 68 65 61 64 69 6e 67 20 32 2e 32 20 74 65 78 74 0a 2d 2d 2d 2d 2d 0a 0a 54 ng.2.2.heading.2.2.text.-----..T
24900 68 69 73 20 6d 61 6b 65 73 20 69 74 20 66 65 61 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20 6d 75 his.makes.it.feasible.to.have.mu
24920 6c 74 69 70 6c 65 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 62 72 61 6e 63 68 65 73 2e 22 0a 20 ltiple.conversation.branches."..
24940 20 3a 6c 6f 63 61 6c 20 74 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 0a 20 20 3a 67 72 .:local.t...:type.'boolean...:gr
24960 6f 75 70 20 27 67 70 74 65 6c 29 0a 0a 0c 0a 3b 3b 3b 20 53 65 74 74 69 6e 67 20 63 6f 6e 74 65 oup.'gptel)....;;;.Setting.conte
24980 78 74 20 61 6e 64 20 63 72 65 61 74 69 6e 67 20 71 75 65 72 69 65 73 0a 28 64 65 66 75 6e 20 67 xt.and.creating.queries.(defun.g
249a0 70 74 65 6c 2d 6f 72 67 2d 2d 67 65 74 2d 74 6f 70 69 63 2d 73 74 61 72 74 20 28 29 0a 20 20 22 ptel-org--get-topic-start.()..."
249c0 49 66 20 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 74 6f 70 69 63 20 69 73 20 73 65 74 2c 20 If.a.conversation.topic.is.set,.
249e0 72 65 74 75 72 6e 20 69 74 2e 22 0a 20 20 28 77 68 65 6e 20 28 6f 72 67 2d 65 6e 74 72 79 2d 67 return.it."...(when.(org-entry-g
24a00 65 74 20 28 70 6f 69 6e 74 29 20 22 47 50 54 45 4c 5f 54 4f 50 49 43 22 20 27 69 6e 68 65 72 69 et.(point)."GPTEL_TOPIC".'inheri
24a20 74 29 0a 20 20 20 20 28 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 6f 72 67 2d 65 6e 74 72 t).....(marker-position.org-entr
24a40 79 2d 70 72 6f 70 65 72 74 79 2d 69 6e 68 65 72 69 74 65 64 2d 66 72 6f 6d 29 29 29 0a 0a 28 64 y-property-inherited-from)))..(d
24a60 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 74 6f 70 69 63 20 28 74 6f 70 69 63 29 efun.gptel-org-set-topic.(topic)
24a80 0a 20 20 22 53 65 74 20 61 20 74 6f 70 69 63 20 61 6e 64 20 6c 69 6d 69 74 20 74 68 69 73 20 63 ..."Set.a.topic.and.limit.this.c
24aa0 6f 6e 76 65 72 73 61 74 69 6f 6e 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 65 61 64 69 onversation.to.the.current.headi
24ac0 6e 67 2e 0a 0a 54 68 69 73 20 6c 69 6d 69 74 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 73 65 6e ng...This.limits.the.context.sen
24ae0 74 20 74 6f 20 74 68 65 20 4c 4c 4d 20 74 6f 20 74 68 65 20 74 65 78 74 20 62 65 74 77 65 65 6e t.to.the.LLM.to.the.text.between
24b00 20 74 68 65 0a 63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 20 61 6e 64 20 74 68 65 20 63 75 72 .the.current.heading.and.the.cur
24b20 73 6f 72 20 70 6f 73 69 74 69 6f 6e 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 sor.position."...(interactive...
24b40 20 28 6c 69 73 74 0a 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 28 6f 72 20 28 64 65 72 .(list.....(progn.......(or.(der
24b60 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 ived-mode-p.'org-mode)..........
24b80 20 28 75 73 65 72 2d 65 72 72 6f 72 20 22 53 75 70 70 6f 72 74 20 66 6f 72 20 6d 75 6c 74 69 70 .(user-error."Support.for.multip
24ba0 6c 65 20 74 6f 70 69 63 73 20 70 65 72 20 62 75 66 66 65 72 20 69 73 20 6f 6e 6c 79 20 69 6d 70 le.topics.per.buffer.is.only.imp
24bc0 6c 65 6d 65 6e 74 65 64 20 66 6f 72 20 60 6f 72 67 2d 6d 6f 64 65 27 2e 22 29 29 0a 20 20 20 20 lemented.for.`org-mode'.")).....
24be0 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 22 53 65 74 20 74 6f 70 69 63 20 61 73 ..(completing-read."Set.topic.as
24c00 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d :."........................(org-
24c20 70 72 6f 70 65 72 74 79 2d 76 61 6c 75 65 73 20 22 47 50 54 45 4c 5f 54 4f 50 49 43 22 29 0a 20 property-values."GPTEL_TOPIC")..
24c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 28 64 ......................nil.nil.(d
24c60 6f 77 6e 63 61 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 owncase.........................
24c80 20 20 20 20 20 20 20 20 28 74 72 75 6e 63 61 74 65 2d 73 74 72 69 6e 67 2d 74 6f 2d 77 69 64 74 ........(truncate-string-to-widt
24ca0 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 h...............................
24cc0 20 20 20 28 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 20 ...(substring-no-properties.....
24ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 ..............................(r
24d00 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 eplace-regexp-in-string.........
24d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 73 2d ..........................."\\s-
24d40 2b 22 20 22 2d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +"."-"..........................
24d60 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 67 65 74 2d 68 65 61 64 69 6e 67 29 29 29 0a 20 20 ..........(org-get-heading)))...
24d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 35 ...............................5
24da0 30 29 29 29 29 29 29 0a 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 70 20 74 6f 70 69 63 29 20 0))))))...(when.(stringp.topic).
24dc0 28 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 79 20 22 47 50 54 45 4c 5f 54 4f 50 49 43 22 20 (org-set-property."GPTEL_TOPIC".
24de0 74 6f 70 69 63 29 29 29 0a 0a 3b 3b 20 4e 4f 54 45 3a 20 54 68 69 73 20 63 61 6e 20 62 65 20 63 topic)))..;;.NOTE:.This.can.be.c
24e00 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 66 6f 72 20 60 onverted.to.a.cl-defmethod.for.`
24e20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 27 0a 3b 3b 20 28 63 6f 6e 63 65 70 74 gptel--parse-buffer'.;;.(concept
24e40 75 61 6c 6c 79 20 63 6c 65 61 6e 65 72 29 2c 20 62 75 74 20 77 69 6c 6c 20 63 61 75 73 65 20 6c ually.cleaner),.but.will.cause.l
24e60 6f 61 64 2d 6f 72 64 65 72 20 69 73 73 75 65 73 20 69 6e 20 67 70 74 65 6c 2e 65 6c 20 61 6e 64 oad-order.issues.in.gptel.el.and
24e80 0a 3b 3b 20 6d 69 67 68 74 20 62 65 20 68 61 72 64 65 72 20 74 6f 20 64 65 62 75 67 2e 0a 28 64 .;;.might.be.harder.to.debug..(d
24ea0 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 63 72 65 61 74 65 2d 70 72 6f 6d 70 74 20 28 26 efun.gptel-org--create-prompt.(&
24ec0 6f 70 74 69 6f 6e 61 6c 20 70 72 6f 6d 70 74 2d 65 6e 64 29 0a 20 20 22 52 65 74 75 72 6e 20 61 optional.prompt-end)..."Return.a
24ee0 20 66 75 6c 6c 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 74 .full.conversation.prompt.from.t
24f00 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 69 73 20 4f 72 67 20 62 75 66 66 65 72 2e 0a he.contents.of.this.Org.buffer..
24f20 0a 49 66 20 60 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 6e 64 .If.`gptel--num-messages-to-send
24f40 27 20 69 73 20 73 65 74 2c 20 6c 69 6d 69 74 20 74 6f 20 74 68 61 74 20 6d 61 6e 79 0a 72 65 63 '.is.set,.limit.to.that.many.rec
24f60 65 6e 74 20 65 78 63 68 61 6e 67 65 73 2e 0a 0a 54 68 65 20 70 72 6f 6d 70 74 20 69 73 20 63 6f ent.exchanges...The.prompt.is.co
24f80 6e 73 74 72 75 63 74 65 64 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 nstructed.from.the.contents.of.t
24fa0 68 65 20 62 75 66 66 65 72 20 75 70 20 74 6f 0a 70 6f 69 6e 74 2c 20 6f 72 20 50 52 4f 4d 50 54 he.buffer.up.to.point,.or.PROMPT
24fc0 2d 45 4e 44 20 69 66 20 70 72 6f 76 69 64 65 64 2e 20 20 49 74 73 20 63 6f 6e 74 65 6e 74 73 20 -END.if.provided...Its.contents.
24fe0 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 0a 76 61 6c 75 65 20 6f 66 20 60 67 70 74 65 6c 2d 6f 72 depend.on.the.value.of.`gptel-or
25000 67 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 27 2c 20 77 68 69 63 68 20 73 65 65 2e g-branching-context',.which.see.
25020 22 0a 20 20 28 75 6e 6c 65 73 73 20 70 72 6f 6d 70 74 2d 65 6e 64 20 28 73 65 74 71 20 70 72 6f "...(unless.prompt-end.(setq.pro
25040 6d 70 74 2d 65 6e 64 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 28 6c 65 74 20 28 28 6d 61 78 2d 65 mpt-end.(point)))...(let.((max-e
25060 6e 74 72 69 65 73 20 28 61 6e 64 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d ntries.(and.gptel--num-messages-
25080 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 to-send.........................
250a0 20 20 28 2a 20 32 20 67 70 74 65 6c 2d 2d 6e 75 6d 2d 6d 65 73 73 61 67 65 73 2d 74 6f 2d 73 65 ..(*.2.gptel--num-messages-to-se
250c0 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 28 74 6f 70 69 63 2d 73 74 61 72 74 20 28 67 70 74 65 nd))).........(topic-start.(gpte
250e0 6c 2d 6f 72 67 2d 2d 67 65 74 2d 74 6f 70 69 63 2d 73 74 61 72 74 29 29 29 0a 20 20 20 20 28 77 l-org--get-topic-start))).....(w
25100 68 65 6e 20 74 6f 70 69 63 2d 73 74 61 72 74 0a 20 20 20 20 20 20 3b 3b 20 6e 61 72 72 6f 77 20 hen.topic-start.......;;.narrow.
25120 74 6f 20 47 50 54 45 4c 5f 54 4f 50 49 43 20 70 72 6f 70 65 72 74 79 20 73 63 6f 70 65 0a 20 20 to.GPTEL_TOPIC.property.scope...
25140 20 20 20 20 28 6e 61 72 72 6f 77 2d 74 6f 2d 72 65 67 69 6f 6e 20 74 6f 70 69 63 2d 73 74 61 72 ....(narrow-to-region.topic-star
25160 74 20 70 72 6f 6d 70 74 2d 65 6e 64 29 29 0a 20 20 20 20 28 69 66 20 67 70 74 65 6c 2d 6f 72 67 t.prompt-end)).....(if.gptel-org
25180 2d 62 72 61 6e 63 68 69 6e 67 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 3b 3b 20 43 72 -branching-context.........;;.Cr
251a0 65 61 74 65 20 70 72 6f 6d 70 74 20 66 72 6f 6d 20 64 69 72 65 63 74 20 61 6e 63 65 73 74 6f 72 eate.prompt.from.direct.ancestor
251c0 73 20 6f 66 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 s.of.point.........(save-excursi
251e0 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6f 72 67 2d 62 75 66 20 28 63 75 on...........(let*.((org-buf.(cu
25200 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rrent-buffer))..................
25220 28 73 74 61 72 74 2d 62 6f 75 6e 64 73 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 (start-bounds.(org-element-linea
25240 67 65 2d 6d 61 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ge-map..........................
25260 20 20 20 20 20 20 20 20 20 20 28 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 61 74 2d 70 6f 69 6e 74 29 ..........(org-element-at-point)
25280 20 23 27 6f 72 67 2d 65 6c 65 6d 65 6e 74 2d 62 65 67 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 .#'org-element-begin............
252a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 68 65 61 64 6c 69 6e 65 ......................'(headline
252c0 20 6f 72 67 2d 64 61 74 61 29 20 27 77 69 74 68 2d 73 65 6c 66 29 29 0a 20 20 20 20 20 20 20 20 .org-data).'with-self)).........
252e0 20 20 20 20 20 20 20 20 20 28 65 6e 64 2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 .........(end-bounds............
25300 20 20 20 20 20 20 20 28 63 6c 2d 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......(cl-loop.................
25320 20 20 20 66 6f 72 20 70 6f 73 20 69 6e 20 28 63 64 72 20 73 74 61 72 74 2d 62 6f 75 6e 64 73 29 ...for.pos.in.(cdr.start-bounds)
25340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 0a 20 20 20 20 20 20 ....................while.......
25360 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 3e 3d 20 70 6f 73 20 28 70 6f 69 6e 74 .............(and.(>=.pos.(point
25380 2d 6d 69 6e 29 29 20 3b 72 65 73 70 65 63 74 20 6e 61 72 72 6f 77 69 6e 67 0a 20 20 20 20 20 20 -min)).;respect.narrowing.......
253a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 6f 73 ..................(goto-char.pos
253c0 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6f 72 67 ).........................;;.org
253e0 2d 65 6c 65 6d 65 6e 74 2d 6c 69 6e 65 61 67 65 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e 73 20 -element-lineage.always.returns.
25400 61 6e 20 65 78 74 72 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 an.extra........................
25420 20 3b 3b 20 28 6f 72 67 2d 64 61 74 61 29 20 65 6c 65 6d 65 6e 74 20 61 74 20 70 6f 69 6e 74 20 .;;.(org-data).element.at.point.
25440 31 2e 20 20 49 66 20 74 68 65 72 65 20 69 73 20 61 6c 73 6f 20 61 0a 20 20 20 20 20 20 20 20 20 1...If.there.is.also.a..........
25460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 68 65 61 64 69 6e 67 20 68 65 72 65 2c 20 ...............;;.heading.here,.
25480 69 74 20 69 73 20 65 69 74 68 65 72 20 61 20 66 61 6c 73 65 20 70 6f 73 69 74 69 76 65 20 6f 72 it.is.either.a.false.positive.or
254a0 20 77 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 77 .we.........................;;.w
254c0 6f 75 6c 64 20 62 65 20 64 6f 75 62 6c 65 20 63 6f 75 6e 74 69 6e 67 20 69 74 2e 20 20 53 6f 20 ould.be.double.counting.it...So.
254e0 77 65 20 72 65 6a 65 63 74 20 74 68 69 73 20 6e 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 we.reject.this.node.............
25500 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 77 68 65 6e 20 61 6c 73 6f 20 61 74 20 61 20 68 65 ............;;.when.also.at.a.he
25520 61 64 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ading..........................(
25540 6e 6f 74 20 28 61 6e 64 20 28 65 71 20 70 6f 73 20 31 29 20 28 6f 72 67 2d 61 74 2d 68 65 61 64 not.(and.(eq.pos.1).(org-at-head
25560 69 6e 67 2d 70 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 ing-p))))....................do.
25580 28 6f 75 74 6c 69 6e 65 2d 6e 65 78 74 2d 68 65 61 64 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 (outline-next-heading)..........
255a0 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 70 6f 69 6e 74 29 20 69 6e 74 6f 20 65 ..........collect.(point).into.e
255c0 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 20 72 nds....................finally.r
255e0 65 74 75 72 6e 20 28 63 6f 6e 73 20 70 72 6f 6d 70 74 2d 65 6e 64 20 65 6e 64 73 29 29 29 29 0a eturn.(cons.prompt-end.ends)))).
25600 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 ............(with-temp-buffer...
25620 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 62 61 ............(setq-local.gptel-ba
25640 63 6b 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ckend...........................
25660 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 62 61 63 6b 65 (buffer-local-value.'gptel-backe
25680 6e 64 20 6f 72 67 2d 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nd.org-buf).....................
256a0 20 20 20 20 20 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 ......gptel--system-message.....
256c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f ......................(buffer-lo
256e0 63 61 6c 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 cal-value.'gptel--system-message
25700 20 6f 72 67 2d 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .org-buf).......................
25720 20 20 20 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....gptel-model.................
25740 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 6c 75 65 20 27 67 ..........(buffer-local-value.'g
25760 70 74 65 6c 2d 6d 6f 64 65 6c 20 6f 72 67 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 ptel-model.org-buf))............
25780 20 20 20 28 63 6c 2d 6c 6f 6f 70 20 66 6f 72 20 73 74 61 72 74 20 69 6e 20 73 74 61 72 74 2d 62 ...(cl-loop.for.start.in.start-b
257a0 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 ounds........................for
257c0 20 65 6e 64 20 20 20 69 6e 20 65 6e 64 2d 62 6f 75 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 .end...in.end-bounds............
257e0 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 69 6e 73 65 72 74 2d 62 75 66 66 65 72 2d 73 75 ............do.(insert-buffer-su
25800 62 73 74 72 69 6e 67 20 6f 72 67 2d 62 75 66 20 73 74 61 72 74 20 65 6e 64 29 0a 20 20 20 20 20 bstring.org-buf.start.end)......
25820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f ..................(goto-char.(po
25840 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 int-min)))...............(goto-c
25860 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 har.(point-max))...............(
25880 6c 65 74 20 28 28 6d 61 6a 6f 72 2d 6d 6f 64 65 20 27 6f 72 67 2d 6d 6f 64 65 29 29 0a 20 20 20 let.((major-mode.'org-mode))....
258a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 .............(gptel--parse-buffe
258c0 72 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 29 29 r.gptel-backend.max-entries)))))
258e0 0a 20 20 20 20 20 20 3b 3b 20 43 72 65 61 74 65 20 70 72 6f 6d 70 74 20 74 68 65 20 75 73 75 61 .......;;.Create.prompt.the.usua
25900 6c 20 77 61 79 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 75 66 66 65 72 l.way.......(gptel--parse-buffer
25920 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 29 29 29 0a 0a .gptel-backend.max-entries))))..
25940 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65 6e 64 2d 77 69 74 68 2d 70 72 6f 70 (defun.gptel-org--send-with-prop
25960 73 20 28 73 65 6e 64 2d 66 75 6e 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 22 43 6f 6e 64 69 s.(send-fun.&rest.args)..."Condi
25980 74 69 6f 6e 61 6c 6c 79 20 6d 6f 64 69 66 79 20 53 45 4e 44 2d 46 55 4e 27 73 20 63 61 6c 6c 69 tionally.modify.SEND-FUN's.calli
259a0 6e 67 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 2e 0a 0a 49 66 20 69 6e 20 61 6e 20 4f 72 67 20 62 75 ng.environment...If.in.an.Org.bu
259c0 66 66 65 72 20 75 6e 64 65 72 20 61 20 68 65 61 64 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 ffer.under.a.heading.containing.
259e0 61 20 73 74 6f 72 65 64 20 67 70 74 65 6c 0a 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 75 73 a.stored.gptel.configuration,.us
25a00 65 20 74 68 61 74 20 66 6f 72 20 72 65 71 75 65 73 74 73 20 69 6e 73 74 65 61 64 2e 20 20 54 68 e.that.for.requests.instead...Th
25a20 69 73 20 69 6e 63 6c 75 64 65 73 20 74 68 65 0a 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2c 20 is.includes.the.system.message,.
25a40 6d 6f 64 65 6c 20 61 6e 64 20 70 72 6f 76 69 64 65 72 20 28 62 61 63 6b 65 6e 64 29 2c 20 61 6d model.and.provider.(backend),.am
25a60 6f 6e 67 20 6f 74 68 65 72 0a 70 61 72 61 6d 65 74 65 72 73 2e 22 0a 20 20 28 69 66 20 28 64 65 ong.other.parameters."...(if.(de
25a80 72 69 76 65 64 2d 6d 6f 64 65 2d 70 20 27 6f 72 67 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 28 70 rived-mode-p.'org-mode).......(p
25aa0 63 61 73 65 2d 6c 65 74 20 28 28 60 28 2c 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 case-let.((`(,gptel--system-mess
25ac0 61 67 65 20 2c 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 2c 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a age.,gptel-backend.,gptel-model.
25ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 67 70 74 65 6c 2d 74 65 6d 70 .....................,gptel-temp
25b00 65 72 61 74 75 72 65 20 2c 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 0a 20 20 20 20 20 erature.,gptel-max-tokens)......
25b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 71 2d 6d 61 70 6e 20 28 6c 61 6d 62 64 61 20 ..............(seq-mapn.(lambda.
25b40 28 61 20 62 29 20 28 6f 72 20 61 20 62 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (a.b).(or.a.b)).................
25b60 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6e 74 72 79 2d 70 .............(gptel-org--entry-p
25b80 72 6f 70 65 72 74 69 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 roperties)......................
25ba0 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 ........(list.gptel--system-mess
25bc0 61 67 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 0a 20 20 age.gptel-backend.gptel-model...
25be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
25c00 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b .gptel-temperature.gptel-max-tok
25c20 65 6e 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 73 65 6e 64 2d 66 75 6e 20 ens)))).........(apply.send-fun.
25c40 61 72 67 73 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 73 65 6e 64 2d 66 75 6e 20 61 72 67 73 29 args)).....(apply.send-fun.args)
25c60 29 29 0a 0a 28 61 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d 73 65 6e 64 20 3a 61 72 6f ))..(advice-add.'gptel-send.:aro
25c80 75 6e 64 20 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65 6e 64 2d 77 69 74 68 2d 70 72 6f 70 73 und.#'gptel-org--send-with-props
25ca0 29 0a 28 61 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e ).(advice-add.'gptel--suffix-sen
25cc0 64 20 3a 61 72 6f 75 6e 64 20 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65 6e 64 2d 77 69 74 68 d.:around.#'gptel-org--send-with
25ce0 2d 70 72 6f 70 73 29 0a 0a 3b 3b 20 3b 3b 20 4e 4f 54 45 3a 20 42 61 73 69 63 20 75 73 65 73 20 -props)..;;.;;.NOTE:.Basic.uses.
25d00 69 6e 20 6f 72 67 2d 6d 6f 64 65 20 61 72 65 20 63 6f 76 65 72 65 64 20 62 79 20 61 64 76 69 73 in.org-mode.are.covered.by.advis
25d20 69 6e 67 20 67 70 74 65 6c 2d 73 65 6e 64 20 61 6e 64 0a 3b 3b 20 3b 3b 20 67 70 74 65 6c 2d 2d ing.gptel-send.and.;;.;;.gptel--
25d40 73 75 66 66 69 78 2d 73 65 6e 64 2e 20 20 46 6f 72 20 63 75 73 74 6f 6d 20 63 6f 6d 6d 61 6e 64 suffix-send...For.custom.command
25d60 73 20 69 74 20 6d 69 67 68 74 20 62 65 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61 64 76 69 73 s.it.might.be.necessary.to.advis
25d80 65 0a 3b 3b 20 3b 3b 20 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 69 6e 73 74 65 61 64 2e 0a 3b e.;;.;;.gptel-request.instead..;
25da0 3b 20 28 61 64 76 69 63 65 2d 61 64 64 20 27 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 3a 61 72 ;.(advice-add.'gptel-request.:ar
25dc0 6f 75 6e 64 20 23 27 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 65 6e 64 2d 77 69 74 68 2d 70 72 6f 70 ound.#'gptel-org--send-with-prop
25de0 73 29 0a 0a 0c 0a 3b 3b 3b 20 53 61 76 69 6e 67 20 61 6e 64 20 72 65 73 74 6f 72 69 6e 67 20 73 s)....;;;.Saving.and.restoring.s
25e00 74 61 74 65 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6e 74 72 79 2d 70 72 6f tate.(defun.gptel-org--entry-pro
25e20 70 65 72 74 69 65 73 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 74 29 0a 20 20 22 46 69 6e 64 20 67 perties.(&optional.pt)..."Find.g
25e40 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 70 72 6f 70 65 72 74 69 65 73 20 73 74 ptel.configuration.properties.st
25e60 6f 72 65 64 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 2e 22 0a 20 20 ored.in.the.current.heading."...
25e80 28 70 63 61 73 65 2d 6c 65 74 0a 20 20 20 20 20 20 28 28 60 28 2c 73 79 73 74 65 6d 20 2c 62 61 (pcase-let.......((`(,system.,ba
25ea0 63 6b 65 6e 64 20 2c 6d 6f 64 65 6c 20 2c 74 65 6d 70 65 72 61 74 75 72 65 20 2c 74 6f 6b 65 6e ckend.,model.,temperature.,token
25ec0 73 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 28 6c s)..........(mapcar...........(l
25ee0 61 6d 62 64 61 20 28 70 72 6f 70 29 20 28 6f 72 67 2d 65 6e 74 72 79 2d 67 65 74 20 28 6f 72 20 ambda.(prop).(org-entry-get.(or.
25f00 70 74 20 28 70 6f 69 6e 74 29 29 20 70 72 6f 70 20 27 73 65 6c 65 63 74 69 76 65 29 29 0a 20 20 pt.(point)).prop.'selective))...
25f20 20 20 20 20 20 20 20 20 27 28 22 47 50 54 45 4c 5f 53 59 53 54 45 4d 22 20 22 47 50 54 45 4c 5f ........'("GPTEL_SYSTEM"."GPTEL_
25f40 42 41 43 4b 45 4e 44 22 20 22 47 50 54 45 4c 5f 4d 4f 44 45 4c 22 0a 20 20 20 20 20 20 20 20 20 BACKEND"."GPTEL_MODEL"..........
25f60 20 20 20 22 47 50 54 45 4c 5f 54 45 4d 50 45 52 41 54 55 52 45 22 20 22 47 50 54 45 4c 5f 4d 41 ..."GPTEL_TEMPERATURE"."GPTEL_MA
25f80 58 5f 54 4f 4b 45 4e 53 22 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 73 79 73 74 65 6d 0a 20 X_TOKENS")))).....(when.system..
25fa0 20 20 20 20 20 28 73 65 74 71 20 73 79 73 74 65 6d 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 .....(setq.system.(string-replac
25fc0 65 20 22 5c 5c 6e 22 20 22 5c 6e 22 20 73 79 73 74 65 6d 29 29 29 0a 20 20 20 20 28 77 68 65 6e e."\\n"."\n".system))).....(when
25fe0 20 62 61 63 6b 65 6e 64 0a 20 20 20 20 20 20 28 73 65 74 71 20 62 61 63 6b 65 6e 64 20 28 61 6c .backend.......(setq.backend.(al
26000 69 73 74 2d 67 65 74 20 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 ist-get.backend.gptel--known-bac
26020 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 kends...........................
26040 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 29 29 0a 20 20 20 20 28 77 68 65 .....nil.nil.#'equal))).....(whe
26060 6e 20 74 65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20 20 28 73 65 74 71 20 74 65 6d 70 65 72 n.temperature.......(setq.temper
26080 61 74 75 72 65 20 28 67 70 74 65 6c 2d 2d 6e 75 6d 62 65 72 69 7a 65 20 74 65 6d 70 65 72 61 74 ature.(gptel--numberize.temperat
260a0 75 72 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 74 6f 6b 65 6e 73 20 28 73 65 74 71 20 74 6f ure))).....(when.tokens.(setq.to
260c0 6b 65 6e 73 20 28 67 70 74 65 6c 2d 2d 6e 75 6d 62 65 72 69 7a 65 20 74 6f 6b 65 6e 73 29 29 29 kens.(gptel--numberize.tokens)))
260e0 0a 20 20 20 20 28 6c 69 73 74 20 73 79 73 74 65 6d 20 62 61 63 6b 65 6e 64 20 6d 6f 64 65 6c 20 .....(list.system.backend.model.
26100 74 65 6d 70 65 72 61 74 75 72 65 20 74 6f 6b 65 6e 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 temperature.tokens)))..(defun.gp
26120 74 65 6c 2d 6f 72 67 2d 2d 72 65 73 74 6f 72 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 52 65 73 tel-org--restore-state.()..."Res
26140 74 6f 72 65 20 67 70 74 65 6c 20 73 74 61 74 65 20 66 6f 72 20 4f 72 67 20 62 75 66 66 65 72 73 tore.gptel.state.for.Org.buffers
26160 20 77 68 65 6e 20 74 75 72 6e 69 6e 67 20 6f 6e 20 60 67 70 74 65 6c 2d 6d 6f 64 65 27 2e 22 0a .when.turning.on.`gptel-mode'.".
26180 20 20 28 73 61 76 65 2d 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 28 77 69 64 65 6e 29 0a ..(save-restriction.....(widen).
261a0 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 73 74 61 74 75 73 0a 20 20 20 20 20 ....(condition-case.status......
261c0 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 ...(progn...........(when-let.((
261e0 62 6f 75 6e 64 73 20 28 6f 72 67 2d 65 6e 74 72 79 2d 67 65 74 20 28 70 6f 69 6e 74 2d 6d 69 6e bounds.(org-entry-get.(point-min
26200 29 20 22 47 50 54 45 4c 5f 42 4f 55 4e 44 53 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 )."GPTEL_BOUNDS"))).............
26220 28 6d 61 70 63 20 28 70 63 61 73 65 2d 6c 61 6d 62 64 61 20 28 60 28 2c 62 65 67 20 2e 20 2c 65 (mapc.(pcase-lambda.(`(,beg...,e
26240 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 74 2d 74 65 nd)).....................(put-te
26260 78 74 2d 70 72 6f 70 65 72 74 79 20 62 65 67 20 65 6e 64 20 27 67 70 74 65 6c 20 27 72 65 73 70 xt-property.beg.end.'gptel.'resp
26280 6f 6e 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 61 64 20 62 onse))...................(read.b
262a0 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 ounds)))...........(pcase-let.((
262c0 60 28 2c 73 79 73 74 65 6d 20 2c 62 61 63 6b 65 6e 64 20 2c 6d 6f 64 65 6c 20 2c 74 65 6d 70 65 `(,system.,backend.,model.,tempe
262e0 72 61 74 75 72 65 20 2c 74 6f 6b 65 6e 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rature.,tokens).................
26300 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 2d 65 6e 74 72 79 2d 70 72 6f 70 65 72 74 .......(gptel-org--entry-propert
26320 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 ies.(point-min)))).............(
26340 77 68 65 6e 20 73 79 73 74 65 6d 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 73 when.system.(setq-local.gptel--s
26360 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 ystem-message.system))..........
26380 20 20 20 28 69 66 20 62 61 63 6b 65 6e 64 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c ...(if.backend.(setq-local.gptel
263a0 2d 62 61 63 6b 65 6e 64 20 62 61 63 6b 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -backend.backend)...............
263c0 28 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 75 62 73 74 69 74 (message................(substit
263e0 75 74 65 2d 63 6f 6d 6d 61 6e 64 2d 6b 65 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ute-command-keys................
26400 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 75 6c 64 .(concat.................."Could
26420 20 6e 6f 74 20 61 63 74 69 76 61 74 65 20 67 70 74 65 6c 20 62 61 63 6b 65 6e 64 20 5c 22 25 73 .not.activate.gptel.backend.\"%s
26440 5c 22 21 20 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 77 69 74 63 68 20 \"!..".................."Switch.
26460 62 61 63 6b 65 6e 64 73 20 77 69 74 68 20 5c 5c 5b 75 6e 69 76 65 72 73 61 6c 2d 61 72 67 75 6d backends.with.\\[universal-argum
26480 65 6e 74 5d 20 5c 5c 5b 67 70 74 65 6c 2d 73 65 6e 64 5d 22 0a 20 20 20 20 20 20 20 20 20 20 20 ent].\\[gptel-send]"............
264a0 20 20 20 20 20 20 22 20 62 65 66 6f 72 65 20 75 73 69 6e 67 20 67 70 74 65 6c 2e 22 29 29 0a 20 ......".before.using.gptel."))..
264c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 ..............backend)).........
264e0 20 20 20 20 28 77 68 65 6e 20 6d 6f 64 65 6c 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 ....(when.model.(setq-local.gpte
26500 6c 2d 6d 6f 64 65 6c 20 6d 6f 64 65 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 l-model.model)).............(whe
26520 6e 20 74 65 6d 70 65 72 61 74 75 72 65 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d n.temperature.(setq-local.gptel-
26540 74 65 6d 70 65 72 61 74 75 72 65 20 74 65 6d 70 65 72 61 74 75 72 65 29 29 0a 20 20 20 20 20 20 temperature.temperature)).......
26560 20 20 20 20 20 20 28 77 68 65 6e 20 74 6f 6b 65 6e 73 20 28 73 65 74 71 2d 6c 6f 63 61 6c 20 67 ......(when.tokens.(setq-local.g
26580 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 20 74 6f 6b 65 6e 73 29 29 29 29 0a 20 20 20 20 20 ptel-max-tokens.tokens))))......
265a0 20 28 3a 73 75 63 63 65 73 73 20 28 6d 65 73 73 61 67 65 20 22 67 70 74 65 6c 20 63 68 61 74 20 .(:success.(message."gptel.chat.
265c0 72 65 73 74 6f 72 65 64 2e 22 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 6d 65 73 73 61 restored.")).......(error.(messa
265e0 67 65 20 22 43 6f 75 6c 64 20 6e 6f 74 20 72 65 73 74 6f 72 65 20 67 70 74 65 6c 20 73 74 61 74 ge."Could.not.restore.gptel.stat
26600 65 2c 20 73 6f 72 72 79 21 20 45 72 72 6f 72 3a 20 25 73 22 20 73 74 61 74 75 73 29 29 29 29 29 e,.sorry!.Error:.%s".status)))))
26620 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 69 65 ..(defun.gptel-org-set-propertie
26640 73 20 28 70 74 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 73 67 29 0a 20 20 22 53 74 6f 72 65 20 74 68 s.(pt.&optional.msg)..."Store.th
26660 65 20 61 63 74 69 76 65 20 67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 75 6e 64 e.active.gptel.configuration.und
26680 65 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 65 61 64 69 6e 67 2e 0a 0a 54 68 65 20 61 63 74 er.the.current.heading...The.act
266a0 69 76 65 20 67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 ive.gptel.configuration.includes
266c0 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 79 73 74 65 6d 0a 6d 65 73 73 61 67 65 2c 20 6c 61 6e .the.current.system.message,.lan
266e0 67 75 61 67 65 20 6d 6f 64 65 6c 20 61 6e 64 20 70 72 6f 76 69 64 65 72 20 28 62 61 63 6b 65 6e guage.model.and.provider.(backen
26700 64 29 2c 20 61 6e 64 20 61 64 64 69 74 69 6f 6e 61 6c 0a 73 65 74 74 69 6e 67 73 20 77 68 65 6e d),.and.additional.settings.when
26720 20 61 70 70 6c 69 63 61 62 6c 65 2e 0a 0a 50 54 20 69 73 20 74 68 65 20 63 75 72 73 6f 72 20 70 .applicable...PT.is.the.cursor.p
26740 6f 73 69 74 69 6f 6e 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 49 66 20 4d 53 47 20 69 73 0a 6e osition.by.default...If.MSG.is.n
26760 6f 6e 2d 6e 69 6c 20 28 64 65 66 61 75 6c 74 29 2c 20 64 69 73 70 6c 61 79 20 61 20 6d 65 73 73 on-nil.(default),.display.a.mess
26780 61 67 65 20 61 66 74 65 72 77 61 72 64 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 age.afterwards."...(interactive.
267a0 28 6c 69 73 74 20 28 70 6f 69 6e 74 29 20 74 29 29 0a 20 20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 (list.(point).t))...(org-entry-p
267c0 75 74 20 70 74 20 22 47 50 54 45 4c 5f 4d 4f 44 45 4c 22 20 67 70 74 65 6c 2d 6d 6f 64 65 6c 29 ut.pt."GPTEL_MODEL".gptel-model)
267e0 0a 20 20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 20 70 74 20 22 47 50 54 45 4c 5f 42 41 43 4b ...(org-entry-put.pt."GPTEL_BACK
26800 45 4e 44 22 20 28 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 2d 6e 61 6d 65 20 67 70 74 65 6c 2d 62 END".(gptel-backend-name.gptel-b
26820 61 63 6b 65 6e 64 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 28 65 71 75 61 6c 20 28 64 65 66 61 75 ackend))...(unless.(equal.(defau
26840 6c 74 2d 76 61 6c 75 65 20 27 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 20 67 70 74 lt-value.'gptel-temperature).gpt
26860 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 0a 20 20 20 20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 el-temperature).....(org-entry-p
26880 75 74 20 70 74 20 22 47 50 54 45 4c 5f 54 45 4d 50 45 52 41 54 55 52 45 22 0a 20 20 20 20 20 20 ut.pt."GPTEL_TEMPERATURE".......
268a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67 20 67 .............(number-to-string.g
268c0 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 29 29 29 0a 20 20 28 6f 72 67 2d 65 6e 74 72 79 ptel-temperature)))...(org-entry
268e0 2d 70 75 74 20 70 74 20 22 47 50 54 45 4c 5f 53 59 53 54 45 4d 22 0a 20 20 20 20 20 20 20 20 20 -put.pt."GPTEL_SYSTEM"..........
26900 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 72 65 70 6c 61 63 65 20 22 5c 6e 22 20 22 5c 5c ........(string-replace."\n"."\\
26920 6e 22 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 20 20 20 0a 20 20 n".gptel--system-message))......
26940 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 28 6f 72 67 2d (when.gptel-max-tokens.....(org-
26960 65 6e 74 72 79 2d 70 75 74 0a 20 20 20 20 20 70 74 20 22 47 50 54 45 4c 5f 4d 41 58 5f 54 4f 4b entry-put......pt."GPTEL_MAX_TOK
26980 45 4e 53 22 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67 20 67 70 74 65 6c 2d 6d 61 78 ENS".(number-to-string.gptel-max
269a0 2d 74 6f 6b 65 6e 73 29 29 29 0a 20 20 28 77 68 65 6e 20 6d 73 67 0a 20 20 20 20 28 6d 65 73 73 -tokens)))...(when.msg.....(mess
269c0 61 67 65 20 22 41 64 64 65 64 20 67 70 74 65 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 74 age."Added.gptel.configuration.t
269e0 6f 20 63 75 72 72 65 6e 74 20 68 65 61 64 6c 69 6e 65 2e 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 o.current.headline.")))..(defun.
26a00 67 70 74 65 6c 2d 6f 72 67 2d 2d 73 61 76 65 2d 73 74 61 74 65 20 28 29 0a 20 20 22 57 72 69 74 gptel-org--save-state.()..."Writ
26a20 65 20 74 68 65 20 67 70 74 65 6c 20 73 74 61 74 65 20 74 6f 20 74 68 65 20 4f 72 67 20 62 75 66 e.the.gptel.state.to.the.Org.buf
26a40 66 65 72 20 61 73 20 4f 72 67 20 70 72 6f 70 65 72 74 69 65 73 2e 22 0a 20 20 28 6f 72 67 2d 77 fer.as.Org.properties."...(org-w
26a60 69 74 68 2d 77 69 64 65 2d 62 75 66 66 65 72 0a 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 ith-wide-buffer....(goto-char.(p
26a80 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 28 77 68 65 6e 20 28 6f 72 67 2d 61 74 2d 68 65 61 64 oint-min))....(when.(org-at-head
26aa0 69 6e 67 2d 70 29 0a 20 20 20 20 20 28 6f 72 67 2d 6f 70 65 6e 2d 6c 69 6e 65 20 31 29 29 0a 20 ing-p)......(org-open-line.1))..
26ac0 20 20 28 67 70 74 65 6c 2d 6f 72 67 2d 73 65 74 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 ..(gptel-org-set-properties.(poi
26ae0 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 3b 3b 20 53 61 76 65 20 72 65 73 70 6f 6e 73 65 20 62 6f 75 nt-min))....;;.Save.response.bou
26b00 6e 64 61 72 69 65 73 0a 20 20 20 28 6c 65 74 72 65 63 20 28 28 77 72 69 74 65 2d 62 6f 75 6e 64 ndaries....(letrec.((write-bound
26b20 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61 74 74 65 6d 70 74 73 s..............(lambda.(attempts
26b40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 62 6f 75 6e 64 73 20 )................(let*.((bounds.
26b60 28 67 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 29 29 0a 20 20 20 20 (gptel--get-buffer-bounds)).....
26b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 66 66 73 65 74 20 28 63 61 61 72 20 ..................(offset.(caar.
26ba0 62 6f 75 6e 64 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 bounds)).......................(
26bc0 6f 66 66 73 65 74 2d 6d 61 72 6b 65 72 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 28 6d 61 6b 65 2d offset-marker.(set-marker.(make-
26be0 6d 61 72 6b 65 72 29 20 6f 66 66 73 65 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 marker).offset)))...............
26c00 20 20 20 28 6f 72 67 2d 65 6e 74 72 79 2d 70 75 74 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 22 47 ...(org-entry-put.(point-min)."G
26c20 50 54 45 4c 5f 42 4f 55 4e 44 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 PTEL_BOUNDS"....................
26c40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 69 6e 31 2d 74 6f 2d 73 74 72 69 6e 67 20 28 67 .............(prin1-to-string.(g
26c60 70 74 65 6c 2d 2d 67 65 74 2d 62 75 66 66 65 72 2d 62 6f 75 6e 64 73 29 29 29 0a 20 20 20 20 20 ptel--get-buffer-bounds)))......
26c80 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 6e 6f 74 20 28 3d 20 28 ............(when.(and.(not.(=.(
26ca0 6d 61 72 6b 65 72 2d 70 6f 73 69 74 69 6f 6e 20 6f 66 66 73 65 74 2d 6d 61 72 6b 65 72 29 20 6f marker-position.offset-marker).o
26cc0 66 66 73 65 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ffset)).........................
26ce0 20 20 20 20 28 3e 20 61 74 74 65 6d 70 74 73 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....(>.attempts.0)).............
26d00 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 77 72 69 74 65 2d 62 6f 75 6e 64 73 20 28 31 2d .......(funcall.write-bounds.(1-
26d20 20 61 74 74 65 6d 70 74 73 29 29 29 29 29 29 29 0a 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 77 .attempts)))))))......(funcall.w
26d40 72 69 74 65 2d 62 6f 75 6e 64 73 20 36 29 29 29 29 0a 0a 0c 0a 3b 3b 3b 20 54 72 61 6e 73 66 6f rite-bounds.6))))....;;;.Transfo
26d60 72 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 63 6f rming.responses.(defun.gptel--co
26d80 6e 76 65 72 74 2d 6d 61 72 6b 64 6f 77 6e 2d 3e 6f 72 67 20 28 73 74 72 29 0a 20 20 22 43 6f 6e nvert-markdown->org.(str)..."Con
26da0 76 65 72 74 20 73 74 72 69 6e 67 20 53 54 52 20 66 72 6f 6d 20 6d 61 72 6b 64 6f 77 6e 20 74 6f vert.string.STR.from.markdown.to
26dc0 20 6f 72 67 20 6d 61 72 6b 75 70 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 76 65 72 79 20 62 61 73 .org.markup...This.is.a.very.bas
26de0 69 63 20 63 6f 6e 76 65 72 74 65 72 20 74 68 61 74 20 68 61 6e 64 6c 65 73 20 6f 6e 6c 79 20 61 ic.converter.that.handles.only.a
26e00 20 66 65 77 20 6d 61 72 6b 75 70 0a 65 6c 65 6d 65 6e 74 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 .few.markup.elements."...(intera
26e20 63 74 69 76 65 29 0a 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 28 ctive)...(with-temp-buffer.....(
26e40 69 6e 73 65 72 74 20 73 74 72 29 0a 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e insert.str).....(goto-char.(poin
26e60 74 2d 6d 69 6e 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f t-min)).....(while.(re-search-fo
26e80 72 77 61 72 64 20 22 60 5c 5c 7c 5c 5c 2a 5c 5c 7b 31 2c 32 5c 5c 7d 5c 5c 7c 5f 22 20 6e 69 6c rward."`\\|\\*\\{1,2\\}\\|_".nil
26ea0 20 74 29 0a 20 20 20 20 20 20 28 70 63 61 73 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30 .t).......(pcase.(match-string.0
26ec0 29 0a 20 20 20 20 20 20 20 20 28 22 60 22 20 28 69 66 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 ).........("`".(if.(save-excursi
26ee0 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 65 67 69 6e 6e 69 6e 67 on....................(beginning
26f00 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 6b -of-line)....................(sk
26f20 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20 22 20 5c 74 22 29 0a 20 20 20 20 20 20 20 20 ip-chars-forward.".\t").........
26f40 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 60 60 60 22 29 29 0a 20 ...........(looking-at."```"))..
26f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 62 61 63 6b 77 61 72 64 ................(progn.(backward
26f80 2d 63 68 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 -char).........................(
26fa0 64 65 6c 65 74 65 2d 63 68 61 72 20 33 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 delete-char.3)..................
26fc0 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 23 2b 62 65 67 69 6e 5f 73 72 63 20 22 29 0a 20 .......(insert."#+begin_src.")..
26fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 72 65 .......................(when.(re
27000 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5e 60 60 60 22 20 6e 69 6c 20 74 29 0a 20 20 -search-forward."^```".nil.t)...
27020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 70 6c 61 63 65 ........................(replace
27040 2d 6d 61 74 63 68 20 22 23 2b 65 6e 64 5f 73 72 63 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 -match."#+end_src")))...........
27060 20 20 20 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 20 22 3d 22 29 29 29 0a 20 20 20 20 20 .....(replace-match."=")))......
27080 20 20 20 28 22 2a 2a 22 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 ...("**".(cond................((
270a0 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2a 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a 5d 5d 5c 5c looking-at."\\*\\(?:[[:word:]]\\
270c0 7c 5c 73 5c 5c 29 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 |\s\\)").................(delete
270e0 2d 63 68 61 72 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 6f 6f 6b 69 -char.1))................((looki
27100 6e 67 2d 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a 5d 5d 5c 5c 7c 5c 73 5c 5c 29 ng-back."\\(?:[[:word:]]\\|\s\\)
27120 5c 5c 2a 5c 5c 7b 32 5c 5c 7d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \\*\\{2\\}".....................
27140 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 2d 20 28 70 6f 69 6e 74 29 20 33 29 20 28 70 6f ..........(max.(-.(point).3).(po
27160 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 int-min))).................(dele
27180 74 65 2d 63 68 61 72 20 2d 31 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 22 2a 22 0a 20 20 20 20 te-char.-1)))).........("*".....
271a0 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 28 73 61 76 65 2d 6d 61 74 63 .....(cond...........((save-matc
271c0 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 6c 6f 6f 6b 69 6e h-data..............(and.(lookin
271e0 67 2d 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 65 3a 5d 5d 5c 5c 7c 5c 73 5c 5c 29 g-back."\\(?:[[:space:]]\\|\s\\)
27200 5c 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 \\(?:_\\|\\*\\)"................
27220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 2d 20 28 70 6f 69 6e 74 29 .................(max.(-.(point)
27240 20 32 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .2).(point-min)))...............
27260 20 20 20 20 28 6e 6f 74 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5b 5b 3a 73 70 61 63 65 3a 5d ....(not.(looking-at."[[:space:]
27280 5d 5c 5c 7c 5c 73 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 50 6f 73 73 69 62 ]\\|\s"))))............;;.Possib
272a0 6c 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 65 6d 70 68 61 73 69 73 0a 20 20 20 20 20 20 20 le.beginning.of.emphasis........
272c0 20 20 20 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 ....(and.............(save-excur
272e0 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 28 72 sion...............(when.(and.(r
27300 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 e-search-forward.(regexp-quote.(
27320 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 match-string.0))................
27340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 .............................(li
27360 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ne-end-position).t).............
27380 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5b 5b 3a 73 70 61 .............(looking-at."[[:spa
273a0 63 65 5d 5d 5c 5c 7c 5c 73 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ce]]\\|\s").....................
273c0 20 20 20 20 20 28 6e 6f 74 20 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b .....(not.(looking-back."\\(?:[[
273e0 3a 73 70 61 63 65 5d 5d 5c 5c 7c 5c 73 5c 5c 29 5c 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 22 :space]]\\|\s\\)\\(?:_\\|\\*\\)"
27400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
27420 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 2d 20 28 70 6f 69 6e 74 29 20 32 29 20 .............(max.(-.(point).2).
27440 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (point-min))))).................
27460 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31 29 20 28 69 6e 73 65 72 74 20 22 2f 22 29 20 74 29 (delete-char.-1).(insert."/").t)
27480 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 64 65 6c 65 74 65 2d 63 68 61 ).............(progn.(delete-cha
274a0 72 20 2d 31 29 20 28 69 6e 73 65 72 74 20 22 2f 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 r.-1).(insert."/"))))...........
274c0 28 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 ((save-excursion..............(i
274e0 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 20 32 29 29 0a gnore-errors.(backward-char.2)).
27500 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 3f 3a 24 .............(looking-at."\\(?:$
27520 5c 5c 7c 5c 5c 60 5c 5c 29 5c 6e 5c 5c 2a 5b 5b 3a 73 70 61 63 65 3a 5d 5d 22 29 29 0a 20 20 20 \\|\\`\\)\n\\*[[:space:]]"))....
27540 20 20 20 20 20 20 20 20 3b 3b 20 42 75 6c 6c 65 74 20 70 6f 69 6e 74 2c 20 72 65 70 6c 61 63 65 ........;;.Bullet.point,.replace
27560 20 77 69 74 68 20 68 79 70 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d .with.hyphen............(delete-
27580 63 68 61 72 20 2d 31 29 20 28 69 6e 73 65 72 74 20 22 2d 22 29 29 29 29 29 29 0a 20 20 20 20 28 char.-1).(insert."-")))))).....(
275a0 62 75 66 66 65 72 2d 73 74 72 69 6e 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d buffer-string)))..(defun.gptel--
275c0 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 65 2d 6d 61 72 6b 65 72 20 28 6e 75 6d 2d 74 69 63 6b 73 replace-source-marker.(num-ticks
275e0 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6e 64 29 0a 20 20 22 52 65 70 6c 61 63 65 20 6d 61 72 6b 64 .&optional.end)..."Replace.markd
27600 6f 77 6e 20 73 74 79 6c 65 20 62 61 63 6b 74 69 63 6b 73 20 77 69 74 68 20 4f 72 67 20 65 71 75 own.style.backticks.with.Org.equ
27620 69 76 61 6c 65 6e 74 73 2e 0a 0a 4e 55 4d 2d 54 49 43 4b 53 20 69 73 20 74 68 65 20 6e 75 6d 62 ivalents...NUM-TICKS.is.the.numb
27640 65 72 20 6f 66 20 62 61 63 6b 74 69 63 6b 73 20 62 65 69 6e 67 20 72 65 70 6c 61 63 65 64 2e 20 er.of.backticks.being.replaced..
27660 20 49 66 20 45 4e 44 20 69 73 0a 74 72 75 65 20 74 68 65 73 65 20 61 72 65 20 5c 22 65 6e 64 69 .If.END.is.true.these.are.\"endi
27680 6e 67 5c 22 20 62 61 63 6b 74 69 63 6b 73 2e 0a 0a 54 68 69 73 20 69 73 20 69 6e 74 65 6e 64 65 ng\".backticks...This.is.intende
276a0 64 20 66 6f 72 20 75 73 65 20 69 6e 20 74 68 65 20 6d 61 72 6b 64 6f 77 6e 20 74 6f 20 6f 72 67 d.for.use.in.the.markdown.to.org
276c0 20 73 74 72 65 61 6d 20 63 6f 6e 76 65 72 74 65 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 66 72 6f .stream.converter."...(let.((fro
276e0 6d 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 28 64 65 6c m.(match-beginning.0))).....(del
27700 65 74 65 2d 72 65 67 69 6f 6e 20 66 72 6f 6d 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 28 69 66 ete-region.from.(point)).....(if
27720 20 28 61 6e 64 20 28 3d 20 6e 75 6d 2d 74 69 63 6b 73 20 33 29 0a 20 20 20 20 20 20 20 20 20 20 .(and.(=.num-ticks.3)...........
27740 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 ...(save-excursion.(beginning-of
27760 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -line)..........................
27780 20 20 20 20 28 73 6b 69 70 2d 63 68 61 72 73 2d 66 6f 72 77 61 72 64 20 22 20 5c 74 22 29 0a 20 ....(skip-chars-forward.".\t")..
277a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 20 ............................(eq.
277c0 28 70 6f 69 6e 74 29 20 66 72 6f 6d 29 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 (point).from))).........(insert.
277e0 28 69 66 20 65 6e 64 20 22 23 2b 65 6e 64 5f 73 72 63 22 20 22 23 2b 62 65 67 69 6e 5f 73 72 63 (if.end."#+end_src"."#+begin_src
27800 20 22 29 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 22 3d 22 29 29 29 29 0a 0a 28 64 65 66 .")).......(insert."="))))..(def
27820 75 6e 20 67 70 74 65 6c 2d 2d 73 74 72 65 61 6d 2d 63 6f 6e 76 65 72 74 2d 6d 61 72 6b 64 6f 77 un.gptel--stream-convert-markdow
27840 6e 2d 3e 6f 72 67 20 28 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 4d 61 72 6b 64 6f 77 6e 20 74 n->org.()..."Return.a.Markdown.t
27860 6f 20 4f 72 67 20 63 6f 6e 76 65 72 74 65 72 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 o.Org.converter...This.function.
27880 70 61 72 73 65 73 20 61 20 73 74 72 65 61 6d 20 6f 66 20 4d 61 72 6b 64 6f 77 6e 20 74 65 78 74 parses.a.stream.of.Markdown.text
278a0 20 74 6f 20 4f 72 67 0a 63 6f 6e 74 69 6e 75 6f 75 73 6c 79 20 77 68 65 6e 20 69 74 20 69 73 20 .to.Org.continuously.when.it.is.
278c0 63 61 6c 6c 65 64 20 77 69 74 68 20 73 75 63 63 65 73 73 69 76 65 20 63 68 75 6e 6b 73 20 6f 66 called.with.successive.chunks.of
278e0 20 74 68 65 0a 74 65 78 74 20 73 74 72 65 61 6d 2e 22 0a 20 20 28 6c 65 74 72 65 63 20 28 28 69 .the.text.stream."...(letrec.((i
27900 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 29 20 20 20 20 20 20 20 20 20 20 20 3b 65 78 70 6c n-src-block.nil)...........;expl
27920 69 63 69 74 20 6e 69 6c 20 74 6f 20 61 64 64 72 65 73 73 20 42 55 47 20 23 31 38 33 0a 20 20 20 icit.nil.to.address.BUG.#183....
27940 20 20 20 20 20 20 20 20 28 74 65 6d 70 2d 62 75 66 20 28 67 65 6e 65 72 61 74 65 2d 6e 65 77 2d ........(temp-buf.(generate-new-
27960 62 75 66 66 65 72 2d 6e 61 6d 65 20 22 2a 67 70 74 65 6c 2d 74 65 6d 70 2a 22 29 29 0a 20 20 20 buffer-name."*gptel-temp*"))....
27980 20 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 70 74 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 29 ........(start-pt.(make-marker))
279a0 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 69 63 6b 73 2d 74 6f 74 61 6c 20 30 29 0a 20 20 20 20 ............(ticks-total.0).....
279c0 20 20 20 20 20 20 20 28 63 6c 65 61 6e 75 70 2d 66 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 .......(cleanup-fn.............(
279e0 6c 61 6d 62 64 61 20 28 26 72 65 73 74 20 5f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 lambda.(&rest._)...............(
27a00 77 68 65 6e 20 28 62 75 66 66 65 72 2d 6c 69 76 65 2d 70 20 28 67 65 74 2d 62 75 66 66 65 72 20 when.(buffer-live-p.(get-buffer.
27a20 74 65 6d 70 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d temp-buf)).................(set-
27a40 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 70 74 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 marker.start-pt.nil)............
27a60 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 74 65 6d 70 2d 62 75 66 29 29 0a 20 20 20 .....(kill-buffer.temp-buf))....
27a80 20 20 20 20 20 20 20 20 20 20 20 28 72 65 6d 6f 76 65 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 ...........(remove-hook.'gptel-p
27aa0 6f 73 74 2d 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 63 6c 65 61 6e 75 70 2d 66 ost-response-functions.cleanup-f
27ac0 6e 29 29 29 29 0a 20 20 20 20 28 61 64 64 2d 68 6f 6f 6b 20 27 67 70 74 65 6c 2d 70 6f 73 74 2d n)))).....(add-hook.'gptel-post-
27ae0 72 65 73 70 6f 6e 73 65 2d 66 75 6e 63 74 69 6f 6e 73 20 63 6c 65 61 6e 75 70 2d 66 6e 29 0a 20 response-functions.cleanup-fn)..
27b00 20 20 20 28 6c 61 6d 62 64 61 20 28 73 74 72 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 6e 6f ...(lambda.(str).......(let.((no
27b20 6f 70 2d 70 29 20 28 74 69 63 6b 73 20 30 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 op-p).(ticks.0)).........(with-c
27b40 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 urrent-buffer.(get-buffer-create
27b60 20 74 65 6d 70 2d 62 75 66 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 .temp-buf)...........(save-excur
27b80 73 69 6f 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 28 69 6e sion.(goto-char.(point-max)).(in
27ba0 73 65 72 74 20 73 74 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6d 61 72 6b sert.str))...........(when.(mark
27bc0 65 72 2d 70 6f 73 69 74 69 6f 6e 20 73 74 61 72 74 2d 70 74 29 20 28 67 6f 74 6f 2d 63 68 61 72 er-position.start-pt).(goto-char
27be0 20 73 74 61 72 74 2d 70 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 69 6e 2d 73 .start-pt))...........(when.in-s
27c00 72 63 2d 62 6c 6f 63 6b 20 28 73 65 74 71 20 74 69 63 6b 73 20 74 69 63 6b 73 2d 74 6f 74 61 6c rc-block.(setq.ticks.ticks-total
27c20 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 ))...........(save-excursion....
27c40 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 .........(while.(re-search-forwa
27c60 72 64 20 22 60 5c 5c 7c 5c 5c 2a 5c 5c 7b 31 2c 32 5c 5c 7d 5c 5c 7c 5f 22 20 6e 69 6c 20 74 29 rd."`\\|\\*\\{1,2\\}\\|_".nil.t)
27c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 20 28 6d 61 74 63 68 2d 73 74 72 ...............(pcase.(match-str
27ca0 69 6e 67 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 22 60 22 0a 20 20 20 20 ing.0).................("`".....
27cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 6f 75 6e 74 20 6e 75 6d 62 65 72 20 6f 66 20 .............;;.Count.number.of.
27ce0 63 6f 6e 73 65 63 75 74 69 76 65 20 62 61 63 6b 74 69 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 consecutive.backticks...........
27d00 20 20 20 20 20 20 20 28 62 61 63 6b 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 20 20 20 20 20 .......(backward-char)..........
27d20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 20 28 63 68 61 72 2d 61 66 74 65 72 29 ........(while.(and.(char-after)
27d40 20 28 65 71 20 28 63 68 61 72 2d 61 66 74 65 72 29 20 3f 60 29 29 0a 20 20 20 20 20 20 20 20 20 .(eq.(char-after).?`))..........
27d60 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 29 0a 20 20 20 20 20 20 20 ..........(forward-char)........
27d80 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 28 63 6c ............(if.in-src-block.(cl
27da0 2d 64 65 63 66 20 74 69 63 6b 73 29 20 28 63 6c 2d 69 6e 63 66 20 74 69 63 6b 73 29 29 29 0a 20 -decf.ticks).(cl-incf.ticks)))..
27dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 74 20 74 68 65 20 76 65 72 62 61 ................;;.Set.the.verba
27de0 74 69 6d 20 73 74 61 74 65 20 6f 66 20 74 68 65 20 70 61 72 73 65 72 0a 20 20 20 20 20 20 20 20 tim.state.of.the.parser.........
27e00 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 65 6f 62 70 29 0a 20 20 20 20 20 20 20 .........(if.(and.(eobp)........
27e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 70 65 63 69 61 6c 20 63 61 ...................;;.Special.ca
27e40 73 65 20 68 65 75 72 69 73 74 69 63 3a 20 49 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 65 6e se.heuristic:.If.the.response.en
27e60 64 73 20 77 69 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ds.with.........................
27e80 20 20 3b 3b 20 5e 60 60 60 20 77 65 20 64 6f 6e 27 74 20 77 61 69 74 20 66 6f 72 20 6d 6f 72 65 ..;;.^```.we.don't.wait.for.more
27ea0 20 69 6e 70 75 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .input..........................
27ec0 20 20 3b 3b 20 46 49 58 4d 45 3a 20 54 68 69 73 20 63 61 6e 20 68 61 76 65 20 66 61 6c 73 65 20 ..;;.FIXME:.This.can.have.false.
27ee0 70 6f 73 69 74 69 76 65 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 positives.......................
27f00 20 20 20 20 20 28 6e 6f 74 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 20 28 62 65 67 69 6e .....(not.(save-excursion.(begin
27f20 6e 69 6e 67 2d 6f 66 2d 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ning-of-line)...................
27f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f .............................(lo
27f60 6f 6b 69 6e 67 2d 61 74 20 22 5e 60 60 60 24 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 oking-at."^```$"))))............
27f80 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6e 64 20 6f 66 20 69 6e 70 75 74 20 3d 3e 20 74 68 65 ..........;;.End.of.input.=>.the
27fa0 72 65 20 63 6f 75 6c 64 20 62 65 20 6d 6f 72 65 20 62 61 63 6b 74 69 63 6b 73 20 63 6f 6d 69 6e re.could.be.more.backticks.comin
27fc0 67 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 6f 20 77 65 g,......................;;.so.we
27fe0 20 77 61 69 74 20 66 6f 72 20 6d 6f 72 65 20 69 6e 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 .wait.for.more.input............
28000 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65 74 71 20 6e 6f 6f 70 2d 70 20 74 29 ..........(progn.(setq.noop-p.t)
28020 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 70 74 20 28 6d 61 74 63 68 2d 62 65 67 .(set-marker.start-pt.(match-beg
28040 69 6e 6e 69 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b inning.0)))....................;
28060 3b 20 57 65 20 72 65 61 63 68 65 64 20 61 20 63 68 61 72 61 63 74 65 72 20 6f 74 68 65 72 20 74 ;.We.reached.a.character.other.t
28080 68 61 6e 20 61 20 62 61 63 6b 74 69 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 han.a.backtick..................
280a0 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 ..(cond.....................;;.T
280c0 69 63 6b 73 20 62 61 6c 61 6e 63 65 64 2c 20 65 6e 64 20 73 72 63 20 62 6c 6f 63 6b 0a 20 20 20 icks.balanced,.end.src.block....
280e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3d 20 74 69 63 6b 73 20 30 29 0a 20 20 .................((=.ticks.0)...
28100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 28 73 65 74 71 20 ...................(progn.(setq.
28120 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in-src-block.nil)...............
28140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f ..............(gptel--replace-so
28160 75 72 63 65 2d 6d 61 72 6b 65 72 20 74 69 63 6b 73 2d 74 6f 74 61 6c 20 27 65 6e 64 29 29 29 0a urce-marker.ticks-total.'end))).
28180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 50 6f 73 69 74 69 76 65 20 ....................;;.Positive.
281a0 6e 75 6d 62 65 72 20 6f 66 20 74 69 63 6b 73 2c 20 73 74 61 72 74 20 61 6e 20 73 72 63 20 62 6c number.of.ticks,.start.an.src.bl
281c0 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 28 3e ock.....................((and.(>
281e0 20 74 69 63 6b 73 20 30 29 20 28 6e 6f 74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 29 0a 20 20 .ticks.0).(not.in-src-block))...
28200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 74 69 63 6b 73 2d 74 ...................(setq.ticks-t
28220 6f 74 61 6c 20 74 69 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 otal.ticks......................
28240 20 20 20 20 20 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 ......in-src-block.t)...........
28260 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 72 65 70 6c 61 63 65 2d 73 6f 75 72 63 ...........(gptel--replace-sourc
28280 65 2d 6d 61 72 6b 65 72 20 74 69 63 6b 73 2d 74 6f 74 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 e-marker.ticks-total))..........
282a0 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 20 6f 66 ...........;;.Negative.number.of
282c0 20 74 69 63 6b 73 20 6f 72 20 69 6e 20 61 20 73 72 63 20 62 6c 6f 63 6b 20 61 6c 72 65 61 64 79 .ticks.or.in.a.src.block.already
282e0 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 72 65 73 65 74 20 74 ,.....................;;.reset.t
28300 69 63 6b 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 73 65 74 icks.....................(t.(set
28320 71 20 74 69 63 6b 73 20 74 69 63 6b 73 2d 74 6f 74 61 6c 29 29 29 29 29 0a 20 20 20 20 20 20 20 q.ticks.ticks-total)))))........
28340 20 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 6f 74 68 65 72 20 63 68 61 72 73 3a 20 .........;;.Handle.other.chars:.
28360 65 6d 70 68 61 73 69 73 2c 20 62 6f 6c 64 20 61 6e 64 20 62 75 6c 6c 65 74 20 69 74 65 6d 73 0a emphasis,.bold.and.bullet.items.
28380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 22 2a 2a 22 20 28 67 75 61 72 ................((and."**".(guar
283a0 64 20 28 6e 6f 74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 20 d.(not.in-src-block)))..........
283c0 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........(cond...................
283e0 28 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 2a 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a 5d 5d ((looking-at."\\*\\(?:[[:word:]]
28400 5c 5c 7c 5c 73 5c 5c 29 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 \\|\s\\)")....................(d
28420 65 6c 65 74 65 2d 63 68 61 72 20 31 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 elete-char.1))..................
28440 20 28 28 6c 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 22 5c 5c 28 3f 3a 5b 5b 3a 77 6f 72 64 3a 5d 5d .((looking-back."\\(?:[[:word:]]
28460 5c 5c 7c 5c 73 5c 5c 29 5c 5c 2a 5c 5c 7b 32 5c 5c 7d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 \\|\s\\)\\*\\{2\\}".............
28480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 78 20 28 2d 20 28 70 6f .....................(max.(-.(po
284a0 69 6e 74 29 20 33 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 int).3).(point-min)))...........
284c0 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31 29 29 29 29 0a 20 20 20 .........(delete-char.-1))))....
284e0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 22 2a 22 20 28 67 75 61 72 64 20 28 6e .............((and."*".(guard.(n
28500 6f 74 20 69 6e 2d 73 72 63 2d 62 6c 6f 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ot.in-src-block)))..............
28520 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 ....(save-match-data............
28540 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 ........(save-excursion.........
28560 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 67 6e 6f 72 65 2d 65 72 72 6f 72 73 20 28 62 61 63 .............(ignore-errors.(bac
28580 6b 77 61 72 64 2d 63 68 61 72 20 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 kward-char.2))..................
285a0 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ....(cond.......................
285c0 28 28 6f 72 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ((or.(looking-at................
285e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5b 5e 5b 3a 73 70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 ............."[^[:space:][:punct
28600 3a 5d 5c 6e 5d 5c 5c 28 3f 3a 5f 5c 5c 7c 5c 5c 2a 5c 5c 29 5c 5c 28 3f 3a 5b 5b 3a 73 70 61 63 :]\n]\\(?:_\\|\\*\\)\\(?:[[:spac
28620 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5d 5c 5c 7c 24 5c 5c 29 22 29 0a 20 20 20 20 20 20 20 20 20 e:][:punct:]]\\|$\\)")..........
28640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e 67 2d 61 74 0a 20 20 ..................(looking-at...
28660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 28 3f 3a .........................."\\(?:
28680 5b 5b 3a 73 70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5d 5c 5c 29 5c 5c 28 3f 3a 5f 5c 5c 7c [[:space:][:punct:]]\\)\\(?:_\\|
286a0 5c 5c 2a 5c 5c 29 5c 5c 28 5b 5e 5b 3a 73 70 61 63 65 3a 5d 5b 3a 70 75 6e 63 74 3a 5d 5d 5c 5c \\*\\)\\([^[:space:][:punct:]]\\
286c0 7c 24 5c 5c 29 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |$\\)"))........................
286e0 3b 3b 20 45 6d 70 68 61 73 69 73 2c 20 72 65 70 6c 61 63 65 20 77 69 74 68 20 73 6c 61 73 68 65 ;;.Emphasis,.replace.with.slashe
28700 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 72 s........................(forwar
28720 64 2d 63 68 61 72 20 32 29 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 2d 31 29 20 28 69 6e 73 65 d-char.2).(delete-char.-1).(inse
28740 72 74 20 22 2f 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 rt."/")).......................(
28760 28 6c 6f 6f 6b 69 6e 67 2d 61 74 20 22 5c 5c 28 3f 3a 24 5c 5c 7c 5c 5c 60 5c 5c 29 5c 6e 5c 5c (looking-at."\\(?:$\\|\\`\\)\n\\
28780 2a 5b 5b 3a 73 70 61 63 65 3a 5d 5d 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *[[:space:]]")..................
287a0 20 20 20 20 20 20 3b 3b 20 42 75 6c 6c 65 74 20 70 6f 69 6e 74 2c 20 72 65 70 6c 61 63 65 20 77 ......;;.Bullet.point,.replace.w
287c0 69 74 68 20 68 79 70 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ith.hyphen......................
287e0 20 20 28 66 6f 72 77 61 72 64 2d 63 68 61 72 20 32 29 20 28 64 65 6c 65 74 65 2d 63 68 61 72 20 ..(forward-char.2).(delete-char.
28800 2d 31 29 20 28 69 6e 73 65 72 74 20 22 2d 22 29 29 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 -1).(insert."-")))))))))........
28820 20 20 20 28 69 66 20 6e 6f 6f 70 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 ...(if.noop-p...............(buf
28840 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 73 74 61 72 74 2d 70 74 29 0a fer-substring.(point).start-pt).
28860 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 31 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 ............(prog1.(buffer-subst
28880 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 ring.(point).(point-max)).......
288a0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 73 74 61 72 74 2d 70 .............(set-marker.start-p
288c0 74 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 t.(point-max)))))))))..(provide.
288e0 27 67 70 74 65 6c 2d 6f 72 67 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 72 67 2e 65 6c 20 65 6e 64 'gptel-org).;;;.gptel-org.el.end
28900 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 s.here..........................
28920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
289a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
289c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
289e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28a00 67 70 74 65 6c 2d 32 30 32 34 30 34 32 34 2e 32 33 30 36 2f 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 gptel-20240424.2306/gptel-ollama
28a20 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .el.............................
28a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 ....0000644.0000000.0000000.0000
28a80 30 30 31 34 35 36 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 30 33 30 00 20 30 00 00 00 0014562.00000000000.015030..0...
28aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28b00 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...root...................
28b20 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........root...................
28b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
28c00 3b 3b 3b 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2e 65 6c 20 2d 2d 2d 20 4f 6c 6c 61 6d 61 20 73 ;;;.gptel-ollama.el.---.Ollama.s
28c20 75 70 70 6f 72 74 20 66 6f 72 20 67 70 74 65 6c 20 20 20 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c upport.for.gptel.....-*-.lexical
28c40 2d 62 69 6e 64 69 6e 67 3a 20 74 3b 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 -binding:.t;.-*-..;;.Copyright.(
28c60 43 29 20 32 30 32 33 20 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 0a 0a 3b 3b C).2023..Karthik.Chikmagalur..;;
28c80 20 41 75 74 68 6f 72 3a 20 4b 61 72 74 68 69 6b 20 43 68 69 6b 6d 61 67 61 6c 75 72 20 3c 6b 61 .Author:.Karthik.Chikmagalur.<ka
28ca0 72 74 68 69 6b 63 68 69 6b 6d 61 67 61 6c 75 72 40 67 6d 61 69 6c 2e 63 6f 6d 3e 0a 3b 3b 20 4b rthikchikmagalur@gmail.com>.;;.K
28cc0 65 79 77 6f 72 64 73 3a 20 68 79 70 65 72 6d 65 64 69 61 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f eywords:.hypermedia..;;.This.pro
28ce0 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 gram.is.free.software;.you.can.r
28d00 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 edistribute.it.and/or.modify.;;.
28d20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 it.under.the.terms.of.the.GNU.Ge
28d40 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 neral.Public.License.as.publishe
28d60 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 d.by.;;.the.Free.Software.Founda
28d80 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 tion,.either.version.3.of.the.Li
28da0 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e cense,.or.;;.(at.your.option).an
28dc0 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 y.later.version...;;.This.progra
28de0 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 m.is.distributed.in.the.hope.tha
28e00 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 t.it.will.be.useful,.;;.but.WITH
28e20 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 OUT.ANY.WARRANTY;.without.even.t
28e40 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 he.implied.warranty.of.;;.MERCHA
28e60 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 NTABILITY.or.FITNESS.FOR.A.PARTI
28e80 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 CULAR.PURPOSE...See.the.;;.GNU.G
28ea0 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 eneral.Public.License.for.more.d
28ec0 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 etails...;;.You.should.have.rece
28ee0 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 ived.a.copy.of.the.GNU.General.P
28f00 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 ublic.License.;;.along.with.this
28f20 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f .program...If.not,.see.<https://
28f40 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d www.gnu.org/licenses/>...;;;.Com
28f60 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 61 64 64 73 20 73 75 70 70 mentary:..;;.This.file.adds.supp
28f80 6f 72 74 20 66 6f 72 20 74 68 65 20 4f 6c 6c 61 6d 61 20 4c 4c 4d 20 41 50 49 20 74 6f 20 67 70 ort.for.the.Ollama.LLM.API.to.gp
28fa0 74 65 6c 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 28 72 65 71 75 69 72 65 20 27 67 70 74 65 6c 29 0a tel..;;;.Code:.(require.'gptel).
28fc0 28 72 65 71 75 69 72 65 20 27 63 6c 2d 67 65 6e 65 72 69 63 29 0a 0a 28 64 65 63 6c 61 72 65 2d (require.'cl-generic)..(declare-
28fe0 66 75 6e 63 74 69 6f 6e 20 6a 73 6f 6e 2d 72 65 61 64 20 22 6a 73 6f 6e 22 20 28 29 29 0a 28 64 function.json-read."json".()).(d
29000 65 66 76 61 72 20 6a 73 6f 6e 2d 6f 62 6a 65 63 74 2d 74 79 70 65 29 0a 0a 3b 3b 3b 20 4f 6c 6c efvar.json-object-type)..;;;.Oll
29020 61 6d 61 0a 28 63 6c 2d 64 65 66 73 74 72 75 63 74 20 28 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 20 ama.(cl-defstruct.(gptel-ollama.
29040 28 3a 63 6f 6e 73 74 72 75 63 74 6f 72 20 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 (:constructor.gptel--make-ollama
29060 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3a ).............................(:
29080 63 6f 70 69 65 72 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 copier.nil).....................
290a0 20 20 20 20 20 20 20 20 28 3a 69 6e 63 6c 75 64 65 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 ........(:include.gptel-backend)
290c0 29 29 0a 0a 28 64 65 66 76 61 72 2d 6c 6f 63 61 6c 20 67 70 74 65 6c 2d 2d 6f 6c 6c 61 6d 61 2d ))..(defvar-local.gptel--ollama-
290e0 74 6f 6b 65 6e 2d 63 6f 75 6e 74 20 30 0a 20 20 22 54 6f 6b 65 6e 20 63 6f 75 6e 74 20 66 6f 72 token-count.0..."Token.count.for
29100 20 6f 6c 6c 61 6d 61 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 2e 0a 0a 54 68 69 73 20 76 61 72 .ollama.conversations...This.var
29120 69 61 62 6c 65 20 68 6f 6c 64 73 20 74 68 65 20 74 6f 74 61 6c 20 74 6f 6b 65 6e 20 63 6f 75 6e iable.holds.the.total.token.coun
29140 74 20 66 6f 72 20 63 6f 6e 76 65 72 73 61 74 69 6f 6e 73 20 77 69 74 68 0a 4f 6c 6c 61 6d 61 20 t.for.conversations.with.Ollama.
29160 6d 6f 64 65 6c 73 2e 0a 0a 49 6e 74 65 6e 64 65 64 20 66 6f 72 20 69 6e 74 65 72 6e 61 6c 20 75 models...Intended.for.internal.u
29180 73 65 20 6f 6e 6c 79 2e 22 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d se.only.")..(cl-defmethod.gptel-
291a0 63 75 72 6c 2d 2d 70 61 72 73 65 2d 73 74 72 65 61 6d 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 curl--parse-stream.((_backend.gp
291c0 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 69 6e 66 6f 29 0a 20 20 22 50 61 72 73 65 20 72 65 73 70 6f tel-ollama).info)..."Parse.respo
291e0 6e 73 65 20 73 74 72 65 61 6d 20 66 6f 72 20 74 68 65 20 4f 6c 6c 61 6d 61 20 41 50 49 2e 22 0a nse.stream.for.the.Ollama.API.".
29200 20 20 28 77 68 65 6e 20 28 62 6f 62 70 29 0a 20 20 20 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f ..(when.(bobp).....(re-search-fo
29220 72 77 61 72 64 20 22 5e 7b 22 29 0a 20 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 30 29 rward."^{").....(forward-line.0)
29240 29 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 20 28 63 6f 6e 74 65 )...(let*.((content-strs).(conte
29260 6e 74 29 20 28 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e nt).(pt.(point))).....(condition
29280 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 73 65 74 71 20 63 -case.nil.........(while.(setq.c
292a0 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 ontent.(gptel--json-read))......
292c0 20 20 20 20 20 28 73 65 74 71 20 70 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 .....(setq.pt.(point))..........
292e0 20 28 6c 65 74 20 28 28 64 6f 6e 65 20 28 6d 61 70 2d 65 6c 74 20 63 6f 6e 74 65 6e 74 20 3a 64 .(let.((done.(map-elt.content.:d
29300 6f 6e 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 one)).................(response.
29320 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 63 6f 6e 74 65 6e 74 20 27 28 3a 6d 65 73 73 61 (map-nested-elt.content.'(:messa
29340 67 65 20 3a 63 6f 6e 74 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 ge.:content)))).............(pus
29360 68 20 72 65 73 70 6f 6e 73 65 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 0a 20 20 20 20 20 20 20 h.response.content-strs)........
29380 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 65 71 20 64 6f 6e 65 20 3a 6a 73 6f 6e 2d 66 61 6c 73 .....(unless.(eq.done.:json-fals
293a0 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 e)...............(with-current-b
293c0 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 uffer.(plist-get.info.:buffer)..
293e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6c 2d 69 6e 63 66 20 67 70 74 65 6c 2d 2d 6f ...............(cl-incf.gptel--o
29400 6c 6c 61 6d 61 2d 74 6f 6b 65 6e 2d 63 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 llama-token-count...............
29420 20 20 20 20 20 20 20 20 20 20 20 28 2b 20 28 6f 72 20 28 6d 61 70 2d 65 6c 74 20 63 6f 6e 74 65 ...........(+.(or.(map-elt.conte
29440 6e 74 20 3a 70 72 6f 6d 70 74 5f 65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 0a 20 20 20 20 20 20 nt.:prompt_eval_count).0).......
29460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6d 61 70 2d 65 ......................(or.(map-e
29480 6c 74 20 63 6f 6e 74 65 6e 74 20 3a 65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 29 29 29 0a 20 20 lt.content.:eval_count).0))))...
294a0 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 ............(goto-char.(point-ma
294c0 78 29 29 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 67 6f 74 6f 2d 63 68 61 72 20 70 x))))).......(error.(goto-char.p
294e0 74 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 20 23 27 63 6f 6e 63 61 74 20 28 6e 72 65 76 65 72 t))).....(apply.#'concat.(nrever
29500 73 65 20 63 6f 6e 74 65 6e 74 2d 73 74 72 73 29 29 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 se.content-strs))))..(cl-defmeth
29520 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 72 65 73 70 6f 6e 73 65 20 28 28 5f 62 61 63 6b od.gptel--parse-response.((_back
29540 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 end.gptel-ollama).response.info)
29560 0a 20 20 22 50 61 72 73 65 20 61 20 6f 6e 65 2d 73 68 6f 74 20 52 45 53 50 4f 4e 53 45 20 66 72 ..."Parse.a.one-shot.RESPONSE.fr
29580 6f 6d 20 74 68 65 20 4f 6c 6c 61 6d 61 20 41 50 49 2e 22 0a 20 20 28 77 68 65 6e 2d 6c 65 74 20 om.the.Ollama.API."...(when-let.
295a0 28 28 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2b 20 28 6f 72 20 28 ((context...............(+.(or.(
295c0 6d 61 70 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 3a 70 72 6f 6d 70 74 5f 65 76 61 6c 5f 63 6f map-elt.response.:prompt_eval_co
295e0 75 6e 74 29 20 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6d 61 unt).0)..................(or.(ma
29600 70 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 3a 65 76 61 6c 5f 63 6f 75 6e 74 29 20 30 29 29 29 p-elt.response.:eval_count).0)))
29620 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 6c 69 73 ).....(with-current-buffer.(plis
29640 74 2d 67 65 74 20 69 6e 66 6f 20 3a 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 63 6c 2d 69 6e t-get.info.:buffer).......(cl-in
29660 63 66 20 67 70 74 65 6c 2d 2d 6f 6c 6c 61 6d 61 2d 74 6f 6b 65 6e 2d 63 6f 75 6e 74 20 63 6f 6e cf.gptel--ollama-token-count.con
29680 74 65 78 74 29 29 29 0a 20 20 28 6d 61 70 2d 6e 65 73 74 65 64 2d 65 6c 74 20 72 65 73 70 6f 6e text)))...(map-nested-elt.respon
296a0 73 65 20 27 28 3a 6d 65 73 73 61 67 65 20 3a 63 6f 6e 74 65 6e 74 29 29 29 0a 0a 28 63 6c 2d 64 se.'(:message.:content)))..(cl-d
296c0 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 72 65 71 75 65 73 74 2d 64 61 74 61 20 28 28 5f efmethod.gptel--request-data.((_
296e0 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 70 72 6f 6d 70 74 73 29 0a 20 backend.gptel-ollama).prompts)..
29700 20 22 4a 53 4f 4e 20 65 6e 63 6f 64 65 20 50 52 4f 4d 50 54 53 20 66 6f 72 20 73 65 6e 64 69 6e ."JSON.encode.PROMPTS.for.sendin
29720 67 20 74 6f 20 43 68 61 74 47 50 54 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 2d g.to.ChatGPT."...(let.((prompts-
29740 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 60 28 3a 6d 6f 64 65 6c 20 2c 67 70 74 65 6c 2d 6d plist..........`(:model.,gptel-m
29760 6f 64 65 6c 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 73 73 61 67 65 73 20 5b 2c 40 70 72 6f odel............:messages.[,@pro
29780 6d 70 74 73 5d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 2c 28 6f 72 20 28 61 mpts]............:stream.,(or.(a
297a0 6e 64 20 67 70 74 65 6c 2d 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 75 73 65 2d 63 75 72 6c 0a 20 nd.gptel-stream.gptel-use-curl..
297c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 62 ........................(gptel-b
297e0 61 63 6b 65 6e 64 2d 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 29 29 0a 20 20 ackend-stream.gptel-backend))...
29800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 ...................:json-false))
29820 29 0a 20 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 29 0a 20 20 20 20 28 77 68 ).........options-plist).....(wh
29840 65 6e 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 0a 20 20 20 20 20 20 28 73 65 74 71 en.gptel-temperature.......(setq
29860 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 .options-plist.............(plis
29880 74 2d 70 75 74 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 20 3a 74 65 6d 70 65 72 61 74 75 72 65 t-put.options-plist.:temperature
298a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 74 65 ........................gptel-te
298c0 6d 70 65 72 61 74 75 72 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 61 78 mperature))).....(when.gptel-max
298e0 2d 74 6f 6b 65 6e 73 0a 20 20 20 20 20 20 28 73 65 74 71 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 -tokens.......(setq.options-plis
29900 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 6f 70 74 69 6f 6e 73 t.............(plist-put.options
29920 2d 70 6c 69 73 74 20 3a 6e 75 6d 5f 70 72 65 64 69 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 -plist.:num_predict.............
29940 20 20 20 20 20 20 20 20 20 20 20 67 70 74 65 6c 2d 6d 61 78 2d 74 6f 6b 65 6e 73 29 29 29 0a 20 ...........gptel-max-tokens)))..
29960 20 20 20 28 77 68 65 6e 20 6f 70 74 69 6f 6e 73 2d 70 6c 69 73 74 0a 20 20 20 20 20 20 28 70 6c ...(when.options-plist.......(pl
29980 69 73 74 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 6f 70 74 69 6f 6e 73 20 6f ist-put.prompts-plist.:options.o
299a0 70 74 69 6f 6e 73 2d 70 6c 69 73 74 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 ptions-plist)).....prompts-plist
299c0 29 29 0a 0a 28 63 6c 2d 64 65 66 6d 65 74 68 6f 64 20 67 70 74 65 6c 2d 2d 70 61 72 73 65 2d 62 ))..(cl-defmethod.gptel--parse-b
299e0 75 66 66 65 72 20 28 28 5f 62 61 63 6b 65 6e 64 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 20 26 uffer.((_backend.gptel-ollama).&
29a00 6f 70 74 69 6f 6e 61 6c 20 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c 65 74 20 28 28 70 optional.max-entries)...(let.((p
29a20 72 6f 6d 70 74 73 29 20 28 70 72 6f 70 29 29 0a 20 20 20 20 28 77 68 69 6c 65 20 28 61 6e 64 0a rompts).(prop)).....(while.(and.
29a40 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 6e 6f 74 20 6d 61 78 2d 65 6e 74 72 69 65 73 ............(or.(not.max-entries
29a60 29 20 28 3e 3d 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 ).(>=.max-entries.0))...........
29a80 20 20 28 73 65 74 71 20 70 72 6f 70 20 28 74 65 78 74 2d 70 72 6f 70 65 72 74 79 2d 73 65 61 72 ..(setq.prop.(text-property-sear
29aa0 63 68 2d 62 61 63 6b 77 61 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ch-backward.....................
29ac0 20 20 20 20 27 67 70 74 65 6c 20 27 72 65 73 70 6f 6e 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 ....'gptel.'response............
29ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 67 65 74 2d 63 68 61 72 2d 70 72 6f .............(when.(get-char-pro
29b00 70 65 72 74 79 20 28 6d 61 78 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 70 6f 69 6e perty.(max.(point-min).(1-.(poin
29b20 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t)))............................
29b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67 70 74 65 6c 29 0a 20 20 ......................'gptel)...
29b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 29 29 29 0a 20 20 ........................t))))...
29b80 20 20 20 20 28 70 75 73 68 20 28 6c 69 73 74 20 3a 72 6f 6c 65 20 28 69 66 20 28 70 72 6f 70 2d ....(push.(list.:role.(if.(prop-
29ba0 6d 61 74 63 68 2d 76 61 6c 75 65 20 70 72 6f 70 29 20 22 61 73 73 69 73 74 61 6e 74 22 20 22 75 match-value.prop)."assistant"."u
29bc0 73 65 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 6e 74 ser")...................:content
29be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 72 69 6d 0a ...................(string-trim.
29c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 ...................(buffer-subst
29c20 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 62 ring-no-properties.(prop-match-b
29c40 65 67 69 6e 6e 69 6e 67 20 70 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eginning.prop)..................
29c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
29c80 20 20 28 70 72 6f 70 2d 6d 61 74 63 68 2d 65 6e 64 20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 20 ..(prop-match-end.prop))........
29ca0 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c 6e 20 5d 2a 5c ............(format."[\t\r\n.]*\
29cc0 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 20 20 20 20 20 \(?:%s\\)?[\t\r\n.]*"...........
29ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 6f 74 65 20 28 .................(regexp-quote.(
29d00 67 70 74 65 6c 2d 70 72 6f 6d 70 74 2d 70 72 65 66 69 78 2d 73 74 72 69 6e 67 29 29 29 0a 20 20 gptel-prompt-prefix-string)))...
29d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 5b 5c 74 5c 72 5c .................(format."[\t\r\
29d40 6e 20 5d 2a 5c 5c 28 3f 3a 25 73 5c 5c 29 3f 5b 5c 74 5c 72 5c 6e 20 5d 2a 22 0a 20 20 20 20 20 n.]*\\(?:%s\\)?[\t\r\n.]*"......
29d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 67 65 78 70 2d 71 75 ......................(regexp-qu
29d80 6f 74 65 20 28 67 70 74 65 6c 2d 72 65 73 70 6f 6e 73 65 2d 70 72 65 66 69 78 2d 73 74 72 69 6e ote.(gptel-response-prefix-strin
29da0 67 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 g))))).............prompts).....
29dc0 20 20 28 61 6e 64 20 6d 61 78 2d 65 6e 74 72 69 65 73 20 28 63 6c 2d 64 65 63 66 20 6d 61 78 2d ..(and.max-entries.(cl-decf.max-
29de0 65 6e 74 72 69 65 73 29 29 29 0a 20 20 20 20 28 63 6f 6e 73 20 28 6c 69 73 74 20 3a 72 6f 6c 65 entries))).....(cons.(list.:role
29e00 20 22 73 79 73 74 65 6d 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6e 74 65 ."system".................:conte
29e20 6e 74 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 nt.gptel--system-message).......
29e40 20 20 20 20 70 72 6f 6d 70 74 73 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 ....prompts)))..;;;###autoload.(
29e60 63 6c 2d 64 65 66 75 6e 20 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 20 28 cl-defun.gptel-make-ollama.....(
29e80 6e 61 6d 65 20 26 6b 65 79 20 63 75 72 6c 2d 61 72 67 73 20 68 65 61 64 65 72 20 6b 65 79 20 6d name.&key.curl-args.header.key.m
29ea0 6f 64 65 6c 73 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 6c 6f odels.stream...........(host."lo
29ec0 63 61 6c 68 6f 73 74 3a 31 31 34 33 34 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 74 6f calhost:11434")...........(proto
29ee0 63 6f 6c 20 22 68 74 74 70 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6e 64 70 6f 69 6e 74 20 col."http")...........(endpoint.
29f00 22 2f 61 70 69 2f 63 68 61 74 22 29 29 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 6e 20 4f 6c 6c "/api/chat"))..."Register.an.Oll
29f20 61 6d 61 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 65 6c 20 77 69 74 68 20 4e 41 4d 45 2e ama.backend.for.gptel.with.NAME.
29f40 0a 0a 4b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 0a 0a 43 55 52 4c 2d 41 52 47 53 20 ..Keyword.arguments:..CURL-ARGS.
29f60 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 61 64 64 69 74 69 6f 6e (optional).is.a.list.of.addition
29f80 61 6c 20 43 75 72 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 0a 48 4f 53 54 20 69 73 20 77 68 65 72 al.Curl.arguments...HOST.is.wher
29fa0 65 20 4f 6c 6c 61 6d 61 20 72 75 6e 73 20 28 77 69 74 68 20 70 6f 72 74 29 2c 20 64 65 66 61 75 e.Ollama.runs.(with.port),.defau
29fc0 6c 74 73 20 74 6f 20 6c 6f 63 61 6c 68 6f 73 74 3a 31 31 34 33 34 0a 0a 4d 4f 44 45 4c 53 20 69 lts.to.localhost:11434..MODELS.i
29fe0 73 20 61 20 6c 69 73 74 20 6f 66 20 61 76 61 69 6c 61 62 6c 65 20 6d 6f 64 65 6c 20 6e 61 6d 65 s.a.list.of.available.model.name
2a000 73 2e 0a 0a 53 54 52 45 41 4d 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 74 6f 20 74 6f 67 67 6c s...STREAM.is.a.boolean.to.toggl
2a020 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f 6e 73 65 73 2c 20 64 65 66 61 75 6c 74 73 20 e.streaming.responses,.defaults.
2a040 74 6f 0a 66 61 6c 73 65 2e 0a 0a 50 52 4f 54 4f 43 4f 4c 20 28 6f 70 74 69 6f 6e 61 6c 29 20 73 to.false...PROTOCOL.(optional).s
2a060 70 65 63 69 66 69 65 73 20 74 68 65 20 70 72 6f 74 6f 63 6f 6c 2c 20 68 74 74 70 20 62 79 20 64 pecifies.the.protocol,.http.by.d
2a080 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 efault...ENDPOINT.(optional).is.
2a0a0 74 68 65 20 41 50 49 20 65 6e 64 70 6f 69 6e 74 20 66 6f 72 20 63 6f 6d 70 6c 65 74 69 6f 6e 73 the.API.endpoint.for.completions
2a0c0 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c 22 2f 61 70 69 2f 67 65 6e 65 72 61 74 65 5c 22 2e ,.defaults.to.\"/api/generate\".
2a0e0 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 20 69 73 20 66 6f 72 20 61 64 64 69 74 ..HEADER.(optional).is.for.addit
2a100 69 6f 6e 61 6c 20 68 65 61 64 65 72 73 20 74 6f 20 73 65 6e 64 20 77 69 74 68 20 65 61 63 68 0a ional.headers.to.send.with.each.
2a120 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 61 6c 69 73 74 20 request...It.should.be.an.alist.
2a140 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 6e 73 20 61 6e 0a 61 6c 69 or.a.function.that.retuns.an.ali
2a160 73 74 2c 20 6c 69 6b 65 3a 0a 28 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c st,.like:.((\"Content-Type\"...\
2a180 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6a 73 6f 6e 5c 22 29 29 0a 0a 4b 45 59 20 28 6f 70 74 69 "application/json\"))..KEY.(opti
2a1a0 6f 6e 61 6c 29 20 69 73 20 61 20 76 61 72 69 61 62 6c 65 20 77 68 6f 73 65 20 76 61 6c 75 65 20 onal).is.a.variable.whose.value.
2a1c0 69 73 20 74 68 65 20 41 50 49 20 6b 65 79 2c 20 6f 72 0a 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 is.the.API.key,.or.function.that
2a1e0 20 72 65 74 75 72 6e 73 20 74 68 65 20 6b 65 79 2e 20 20 54 68 69 73 20 69 73 20 74 79 70 69 63 .returns.the.key...This.is.typic
2a200 61 6c 6c 79 20 6e 6f 74 20 72 65 71 75 69 72 65 64 0a 66 6f 72 20 6c 6f 63 61 6c 20 6d 6f 64 65 ally.not.required.for.local.mode
2a220 6c 73 20 6c 69 6b 65 20 4f 6c 6c 61 6d 61 2e 0a 0a 45 78 61 6d 70 6c 65 3a 0a 2d 2d 2d 2d 2d 2d ls.like.Ollama...Example:.------
2a240 2d 0a 0a 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 5c 22 4f 6c 6c 61 6d 61 -..(gptel-make-ollama...\"Ollama
2a260 5c 22 0a 20 20 3a 68 6f 73 74 20 5c 22 6c 6f 63 61 6c 68 6f 73 74 3a 31 31 34 33 34 5c 22 0a 20 \"...:host.\"localhost:11434\"..
2a280 20 3a 6d 6f 64 65 6c 73 20 5c 5c 3d 27 28 5c 22 6d 69 73 74 72 61 6c 3a 6c 61 74 65 73 74 5c 22 .:models.\\='(\"mistral:latest\"
2a2a0 29 0a 20 20 3a 73 74 72 65 61 6d 20 74 29 22 0a 20 20 28 64 65 63 6c 61 72 65 20 28 69 6e 64 65 )...:stream.t)"...(declare.(inde
2a2c0 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 62 61 63 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d nt.1))...(let.((backend.(gptel--
2a2e0 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 make-ollama...................:c
2a300 75 72 6c 2d 61 72 67 73 20 63 75 72 6c 2d 61 72 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 url-args.curl-args..............
2a320 20 20 20 20 20 3a 6e 61 6d 65 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .....:name.name.................
2a340 20 20 3a 68 6f 73 74 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a ..:host.host...................:
2a360 68 65 61 64 65 72 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 header.header...................
2a380 3a 6b 65 79 20 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 :key.key...................:mode
2a3a0 6c 73 20 6d 6f 64 65 6c 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 72 6f ls.models...................:pro
2a3c0 74 6f 63 6f 6c 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tocol.protocol..................
2a3e0 20 3a 65 6e 64 70 6f 69 6e 74 20 65 6e 64 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 .:endpoint.endpoint.............
2a400 20 20 20 20 20 20 3a 73 74 72 65 61 6d 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 ......:stream.stream............
2a420 20 20 20 20 20 20 20 3a 75 72 6c 20 28 69 66 20 70 72 6f 74 6f 63 6f 6c 0a 20 20 20 20 20 20 20 .......:url.(if.protocol........
2a440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 70 72 6f 74 ....................(concat.prot
2a460 6f 63 6f 6c 20 22 3a 2f 2f 22 20 68 6f 73 74 20 65 6e 64 70 6f 69 6e 74 29 0a 20 20 20 20 20 20 ocol."://".host.endpoint).......
2a480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 6f 73 74 20 ...................(concat.host.
2a4a0 65 6e 64 70 6f 69 6e 74 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 31 20 62 61 63 6b 65 6e 64 endpoint))))).....(prog1.backend
2a4c0 0a 20 20 20 20 20 20 28 73 65 74 66 20 28 61 6c 69 73 74 2d 67 65 74 20 6e 61 6d 65 20 67 70 74 .......(setf.(alist-get.name.gpt
2a4e0 65 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 el--known-backends..............
2a500 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 6e 69 6c 20 23 27 65 71 75 61 6c 29 0a 20 20 20 20 20 ..........nil.nil.#'equal)......
2a520 20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63 6b 65 6e 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 .............backend))))..(provi
2a540 64 65 20 27 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 6f 6c 6c 61 de.'gptel-ollama).;;;.gptel-olla
2a560 6d 61 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ma.el.ends.here.................
2a580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aa00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aa20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aa40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aa60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aa80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aaa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ab00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ab20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ab40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ab60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ab80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2abc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2abe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2acc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ace0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ad80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ada0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2adc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ade0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ae00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ae20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ae40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ae60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ae80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2af00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2af20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2af40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2af60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2af80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2afa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2afc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2afe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ba80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2baa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bc00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bc60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bc80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bcc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2be00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2be20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2be40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2be60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2be80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2bfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c8a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c8e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ca00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ca20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ca40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ca60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ca80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2caa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cb00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cb20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cb40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cb60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cb80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ccc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................