summaryrefslogtreecommitdiff
path: root/localrepo/gptel-20240404.813.tar
blob: c9bf1b05b65a7c3b138a47c9f78a73fb6d2c8c3d (plain)
ofshex dumpascii
0000 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 gptel-20240404.813/.............
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 30 33 37 00 20 35 00 00 00 0000000.00000000000.012037..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 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 61 6e 74 68 72 6f 70 gptel-20240404.813/gptel-anthrop
0220 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 00 ic.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 33 34 35 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 34 36 34 00 20 30 00 00 00 0013450.00000000000.015464..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 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
0420 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..-*-
0440 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
0460 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
0480 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
04a0 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
04c0 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
04e0 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
0500 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
0520 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
0540 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
0560 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
0580 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
05a0 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.
05c0 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
05e0 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
0600 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
0620 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
0640 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
0660 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...
0680 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
06a0 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.
06c0 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
06e0 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.;;
0700 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
0720 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
0740 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
0760 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
0780 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
07a0 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
07c0 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
07e0 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
0800 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)..(
0820 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
0840 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
0860 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
0880 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"
08a0 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
08c0 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
08e0 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
0900 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-
0920 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)......................
0940 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).........
0960 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
0980 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
09a0 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
09c0 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)...(
09e0 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
0a00 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.
0a20 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
0a40 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).........
0a60 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)).
0a80 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
0aa0 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))...........
0ac0 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
0ae0 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
0b00 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
0b20 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
0b40 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)....
0b60 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.(
0b80 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))..............
0ba0 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-
0bc0 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.............................
0be0 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)))
0c00 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
0c20 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
0c40 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
0c60 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
0c80 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
0ca0 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
0cc0 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
0ce0 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)))..(
0d00 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
0d20 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
0d40 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
0d60 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
0d80 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.,
0da0 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.,
0dc0 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...........
0de0 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.
0e00 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..................
0e20 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
0e40 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))...................
0e60 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_
0e80 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
0ea0 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
0ec0 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
0ee0 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
0f00 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
0f20 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
0f40 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
0f60 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.
0f80 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).(
0fa0 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..........
0fc0 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
0fe0 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
1000 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
1020 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
1040 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.....................
1060 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
1080 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))).....
10a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
10c0 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)............
10e0 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
1100 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
1120 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")....
1140 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.........
1160 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..........
1180 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
11a0 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.
11c0 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)...........................
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 28 70 72 6f 70 2d 6d .........................(prop-m
1200 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)).................
1220 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\\)
1240 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.]*"....................
1260 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
1280 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)))............
12a0 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.]*\\(?:
12c0 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.]*"...............
12e0 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
1300 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)))))...
1320 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
1340 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))
1360 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.
1380 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..
13a0 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
13c0 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............
13e0 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
1400 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)).................
1420 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)..
1440 20 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
1460 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"))))
1480 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-
14a0 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"................
14c0 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"..
14e0 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
1500 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
1520 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
1540 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
1560 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
1580 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
15a0 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
15c0 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
15e0 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
1600 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.
1620 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
1640 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
1660 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
1680 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
16a0 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
16c0 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
16e0 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
1700 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
1720 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
1740 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
1760 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
1780 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
17a0 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
17c0 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
17e0 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
1800 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
1820 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.
1840 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.".
1860 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.((
1880 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..
18a0 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
18c0 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
18e0 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.
1900 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
1920 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.....
1940 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....
1960 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
1980 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
19a0 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
19c0 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.(
19e0 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.....................
1a00 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
1a20 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)....................
1a40 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)))))
1a60 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.
1a80 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
1aa0 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
1ac0 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)...................
1ae0 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
1b00 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
1b20 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.........................
1b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c00 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 63 75 72 6c 2e 65 6c gptel-20240404.813/gptel-curl.el
1c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1c60 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
1c80 30 30 34 37 30 36 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 34 35 35 00 20 30 00 00 00 0047067.00000000000.014455..0...
1ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d00 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...................
1d20 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...................
1d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1e00 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
1e20 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
1e40 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.(
1e60 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..;;
1e80 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;;.<
1ea0 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>.;;
1ec0 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-
1ee0 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
1f00 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
1f20 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.
1f40 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
1f60 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
1f80 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
1fa0 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
1fc0 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
1fe0 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
2000 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
2020 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
2040 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
2060 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
2080 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
20a0 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..
20c0 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
20e0 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
2100 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.
2120 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.;
2140 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
2160 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
2180 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
21a0 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
21c0 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.'
21e0 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
2200 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-
2220 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
2240 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
2260 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
2280 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
22a0 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
22c0 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
22e0 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
2300 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"."-
2320 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"..
2340 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-").....
2360 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
2380 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
23a0 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
23c0 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
23e0 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
2400 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
2420 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.
2440 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.
2460 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.
2480 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
24a0 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
24c0 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."...
24e0 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.(
2500 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)
2520 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
2540 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)..............
2560 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)
2580 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
25a0 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
25c0 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))....
25e0 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
2600 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
2620 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
2640 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
2660 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)))...........
2680 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)
26a0 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
26c0 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.
26e0 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.
2700 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).........
2720 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.
2740 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
2760 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
2780 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)))..............
27a0 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)).......
27c0 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")
27e0 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
2800 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......
2820 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
2840 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
2860 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..
2880 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))......
28a0 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
28c0 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)..........
28e0 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))
2900 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
2920 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
2940 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
2960 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
2980 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._)..................
29a0 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
29c0 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)....................
29e0 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
2a00 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)............................
2a20 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
2a40 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)))))....
2a60 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
2a80 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)......
2aa0 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".......
2ac0 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
2ae0 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
2b00 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
2b20 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.......
2b40 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"......
2b60 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".":"))....
2b80 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
2ba0 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
2bc0 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
2be0 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
2c00 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
2c20 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
2c40 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
2c60 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
2c80 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
2ca0 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)..
2cc0 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
2ce0 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
2d00 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
2d20 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
2d40 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.
2d60 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)
2d80 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
2da0 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
2dc0 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
2de0 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
2e00 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.
2e20 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"......................
2e40 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
2e60 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)...................
2e80 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)))).....
2ea0 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
2ec0 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)).
2ee0 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
2f00 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
2f20 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
2f40 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".
2f60 20 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
2f80 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
2fa0 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
2fc0 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-
2fe0 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
3000 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
3020 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
3040 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
3060 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.
3080 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
30a0 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).....
30c0 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
30e0 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)...........
3100 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.....
3120 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
3140 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
3160 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....................
3180 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
31a0 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'..
31c0 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.
31e0 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....
3200 20 20 20 20 20 20 20 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 ...............................(
3220 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.......................
3240 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.
3260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3280 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
32a0 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............................
32c0 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...............
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 28 61 72 65 66 20 ..........................(aref.
3300 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.............
3320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3340 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
3360 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)).....................
3380 20 20 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))
33a0 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 ................................
33c0 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............
33e0 20 20 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
3400 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............
3420 20 20 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.
3440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3460 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.
3480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
34a0 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
34c0 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))...........
34e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3500 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))))....................
3520 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....
3540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
3560 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..................
3580 20 20 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
35a0 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..
35c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
35e0 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
3600 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
3620 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
3640 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..........................
3660 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
3680 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.............................
36a0 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.
36c0 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))..................
36e0 20 20 20 20 20 20 20 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 ...............................'
3700 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).......................
3720 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
3740 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))).......
3760 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
3780 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
37a0 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
37c0 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)...............
37e0 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.#
3800 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))....
3820 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
3840 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)))))..
3860 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.
3880 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
38a0 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
38c0 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
38e0 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."..
3900 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..
3920 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
3940 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
3960 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
3980 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
39a0 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
39c0 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...........
39e0 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
3a00 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....................
3a20 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)))).
3a40 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.
3a60 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
3a80 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
3aa0 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
3ac0 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
3ae0 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)))......
3b00 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
3b20 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))...
3b40 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.
3b60 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
3b80 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.
3ba0 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
3bc0 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
3be0 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
3c00 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
3c20 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!")).
3c40 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.........
3c60 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
3c80 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)................
3ca0 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).:
3cc0 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
3ce0 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))..........
3d00 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))).....
3d20 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
3d40 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
3d60 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-
3d80 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).
3da0 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)...
3dc0 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
3de0 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-
3e00 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
3e20 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
3e40 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
3e60 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
3e80 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))).....
3ea0 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
3ec0 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
3ee0 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
3f00 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.
3f20 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
3f40 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
3f60 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.
3f80 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
3fa0 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
3fc0 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))).....
3fe0 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.
4000 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)).....
4020 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.
4040 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
4060 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
4080 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
40a0 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
40c0 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
40e0 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
4100 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.
4120 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)).....
4140 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
4160 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
4180 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)
41a0 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.(
41c0 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
41e0 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
4200 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")).
4220 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.......
4240 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
4260 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
4280 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...
42a0 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.(
42c0 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
42e0 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))...............
4300 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
4320 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).
4340 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..
4360 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.(
4380 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)......
43a0 20 20 20 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
43c0 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
43e0 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-
4400 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
4420 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
4440 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-
4460 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-
4480 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
44a0 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
44c0 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).
44e0 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*.((`(,_...,
4500 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
4520 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
4540 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-
4560 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)...........................
4580 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
45a0 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)............
45c0 20 20 20 20 20 20 20 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 ...............................(
45e0 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))))......
4600 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
4620 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))).....
4640 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
4660 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
4680 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)...................
46a0 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
46c0 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)..
46e0 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
4700 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
4720 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
4740 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-
4760 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)).......
4780 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
47a0 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))).
47c0 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
47e0 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
4800 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)))))).....
4820 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
4840 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.
4860 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
4880 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
48a0 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."%
48c0 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
48e0 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-
4900 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
4920 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
4940 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
4960 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
4980 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-
49a0 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
49c0 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
49e0 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.
4a00 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
4a20 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)))......
4a40 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
4a60 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
4a80 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
4aa0 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..........................
4ac0 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
4ae0 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)...........................
4b00 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
4b20 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)))).....
4b40 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
4b60 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
4b80 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
4ba0 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..............................
4bc0 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).
4be0 20 20 20 20 20 20 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
4c00 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
4c20 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.
4c40 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
4c60 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)..
4c80 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
4ca0 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
4cc0 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
4ce0 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.
4d00 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.
4d20 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
4d40 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..
4d60 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
4d80 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
4da0 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))...
4dc0 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
4de0 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)).......
4e00 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.:
4e20 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
4e40 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.(
4e60 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).....
4e80 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...........
4ea0 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.......
4ec0 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.".
4ee0 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)............
4f00 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).....
4f20 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
4f40 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))........
4f60 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")........
4f80 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.......
4fa0 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
4fc0 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....................
4fe0 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
5000 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
5020 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)))....
5040 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
5060 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
5080 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
50a0 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)
50c0 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.:
50e0 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)
5100 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
5120 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
5140 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
5160 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)))......................
5180 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..........
51a0 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.'
51c0 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).............(
51e0 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)......
5200 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-
5220 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
5240 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
5260 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)))))).
5280 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
52a0 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
52c0 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-
52e0 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
5300 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.
5320 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.
5340 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
5360 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))
5380 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)........
53a0 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
53c0 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
53e0 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
5400 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).
5420 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.........
5440 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)).......
5460 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
5480 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)))).....
54a0 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
54c0 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
54e0 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).........................
5500 20 20 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-
5520 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))).................
5540 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..............
5560 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......
5580 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
55a0 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]+\
55c0 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)...................
55e0 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
5600 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
5620 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
5640 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
5660 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-
5680 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
56a0 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.(
56c0 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
56e0 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)...............
5700 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..........
5720 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
5740 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
5760 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."
5780 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.
57a0 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*
57c0 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..
57e0 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.(
5800 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
5820 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
5840 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
5860 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
5880 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
58a0 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))..
58c0 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))...
58e0 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
5900 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
5920 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).............
5940 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)))).
5960 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
5980 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
59a0 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).'
59c0 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"))..................
59e0 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)......
5a00 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
5a20 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
5a40 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
5a60 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))))...
5a80 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.
5aa0 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))..
5ac0 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
5ae0 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))
5b00 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).
5b20 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
5b40 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
5b60 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
5b80 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
5ba0 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")))
5bc0 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
5be0 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
5c00 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))............
5c20 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.""
5c40 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
5c60 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).....
5c80 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-
5ca0 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)........
5cc0 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))
5ce0 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-
5d00 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
5d20 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
5d40 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
5d60 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.
5d80 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
5da0 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
5dc0 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
5de0 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
5e00 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
5e20 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
5e40 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.")
5e60 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
5e80 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
5ea0 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
5ec0 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
5ee0 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
5f00 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
5f20 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
5f40 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
5f60 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
5f80 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)).........
5fa0 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
5fc0 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))).......(
5fe0 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
6000 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
6020 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.((
6040 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)...
6060 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
6080 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..................
60a0 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.
60c0 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
60e0 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)....
6100 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
6120 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
6140 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
6160 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
6180 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
61a0 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
61c0 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
61e0 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)..
6200 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
6220 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
6240 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."
6260 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-
6280 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
62a0 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)))...
62c0 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
62e0 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
6300 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*.((`(,_
6320 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-
6340 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
6360 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-
6380 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................
63a0 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
63c0 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).........
63e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
6400 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)))).....
6420 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........
6440 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......
6460 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
6480 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
64a0 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).........................
64c0 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))))....
64e0 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
6500 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)...........
6520 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
6540 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......................
6560 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
6580 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)..............................
65a0 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)))
65c0 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............;;
65e0 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
6600 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
6620 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
6640 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"))....
6660 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.....
6680 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
66a0 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)).........
66c0 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))............
66e0 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)....
6700 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
6720 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))........
6740 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
6760 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)).........
6780 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
67a0 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))............
67c0 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...........
67e0 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...
6800 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
6820 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
6840 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))))).........
6860 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)..
6880 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
68a0 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
68c0 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)..........
68e0 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.
6900 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)))......
6920 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-
6940 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.
6960 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
6980 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
69a0 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-
69c0 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."(".
69e0 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
6a00 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.
6a20 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
6a40 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."")))))............(
6a60 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)..
6a80 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."("
6aa0 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
6ac0 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
6ae0 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")).....
6b00 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."(".
6b20 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
6b40 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.")....................
6b60 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.
6b80 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."
6ba0 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
6bc0 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
6be0 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."))
6c00 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
6c20 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..........
6c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e00 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 67 65 6d 69 6e 69 2e gptel-20240404.813/gptel-gemini.
6e20 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 00 el..............................
6e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6e60 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
6e80 30 30 31 35 30 36 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 34 37 00 20 30 00 00 00 0015063.00000000000.014747..0...
6ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f00 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...................
6f20 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...................
6f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7000 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.
7020 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-
7040 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
7060 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..;;.
7080 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
70a0 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
70c0 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
70e0 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
7100 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
7120 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
7140 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
7160 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
7180 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
71a0 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
71c0 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
71e0 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
7200 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
7220 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.;;
7240 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.
7260 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.;
7280 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
72a0 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
72c0 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
72e0 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
7300 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
7320 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/>...
7340 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
7360 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
7380 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
73a0 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
73c0 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
73e0 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
7400 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
7420 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
7440 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-
7460 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
7480 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
74a0 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-
74c0 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
74e0 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)...
7500 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)...
7520 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-
7540 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-
7560 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
7580 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
75a0 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.
75c0 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
75e0 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
7600 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)...
7620 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)
7640 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....
7660 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*.............
7680 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
76a0 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
76c0 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.......................
76e0 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
7700 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))))..........
7720 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))))
7740 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.
7760 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
7780 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
77a0 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
77c0 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
77e0 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
7800 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.:
7820 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
7840 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.((_
7860 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)..
7880 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
78a0 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
78c0 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
78e0 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
7900 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
7920 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".........................
7940 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")...
7960 20 20 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
7980 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
79a0 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"..........................
79c0 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")....
79e0 20 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
7a00 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
7a20 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"...........................
7a40 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").....
7a60 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
7a80 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"..
7aa0 20 20 20 20 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
7ac0 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")])).........
7ae0 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
7b00 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..........
7b20 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............
7b40 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
7b60 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
7b80 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
7ba0 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
7bc0 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
7be0 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))).
7c00 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
7c20 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.................
7c40 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)).....
7c60 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
7c80 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
7ca0 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
7cc0 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))....
7ce0 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
7d00 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
7d20 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-
7d40 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........
7d60 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
7d80 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.
7da0 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
7dc0 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)))...............
7de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7e00 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)......................
7e20 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
7e40 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)."
7e60 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")..................
7e80 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.
7ea0 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..............
7ec0 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
7ee0 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
7f00 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)...................
7f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
7f40 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
7f60 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)).............................
7f80 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\\)
7fa0 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.]*"....................
7fc0 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
7fe0 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)))
8000 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 ................................
8020 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\\)?[\
8040 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.]*".......................
8060 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.(
8080 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))))
80a0 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
80c0 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
80e0 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
8100 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
8120 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
8140 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)...............
8160 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)......
8180 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
81a0 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
81c0 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..
81e0 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
8200 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.
8220 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
8240 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"
8260 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
8280 6f 22 29 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 62 65 74 o"))...........(endpoint."/v1bet
82a0 61 2f 6d 6f 64 65 6c 73 22 29 29 0a 0a 20 20 22 52 65 67 69 73 74 65 72 20 61 20 47 65 6d 69 6e a/models"))...."Register.a.Gemin
82c0 69 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 i.backend.for.gptel.with.NAME...
82e0 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
8300 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
8320 20 43 75 72 6c 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 .Curl.arguments...HOST.(optional
8340 29 20 69 73 20 74 68 65 20 41 50 49 20 68 6f 73 74 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 0a 5c ).is.the.API.host,.defaults.to.\
8360 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
8380 6f 6d 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 om\"...MODELS.is.a.list.of.avail
83a0 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 61 20 62 able.model.names...STREAM.is.a.b
83c0 6f 6f 6c 65 61 6e 20 74 6f 20 65 6e 61 62 6c 65 20 73 74 72 65 61 6d 69 6e 67 20 72 65 73 70 6f oolean.to.enable.streaming.respo
83e0 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 54 4f 43 nses,.defaults.to.false...PROTOC
8400 4f 4c 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 OL.(optional).specifies.the.prot
8420 6f 63 6f 6c 2c 20 5c 22 68 74 74 70 73 5c 22 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 ocol,.\"https\".by.default...END
8440 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 49 20 65 6e 64 70 POINT.(optional).is.the.API.endp
8460 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 75 6c 74 73 20 74 oint.for.completions,.defaults.t
8480 6f 0a 5c 22 2f 76 31 62 65 74 61 2f 6d 6f 64 65 6c 73 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f o.\"/v1beta/models\"...HEADER.(o
84a0 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
84c0 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
84e0 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
8500 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:.((
8520 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
8540 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
8560 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
8580 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
85a0 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))...
85c0 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 67 65 6d 69 (let.((backend.(gptel--make-gemi
85e0 6e 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 ni...................:curl-args.
8600 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
8620 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
8640 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
8660 61 64 65 72 0a 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 ader...................:models.m
8680 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 74 6f 63 6f odels...................:protoco
86a0 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 20 3a 65 6e l.protocol...................:en
86c0 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 20 20 20 20 dpoint.endpoint.................
86e0 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 20 20 20 20 ..:stream.stream................
8700 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 75 ...:key.key...................:u
8720 72 6c 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 20 20 20 rl.(lambda.()...................
8740 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 65 74 68 6f 64 20 28 69 66 20 28 61 6e 64 20 73 74 .......(let.((method.(if.(and.st
8760 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 20 20 20 20 20 ream............................
8780 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 73 74 72 65 61 .....................gptel-strea
87a0 6d 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 m)..............................
87c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 74 72 65 61 6d 47 65 6e 65 72 61 74 65 43 6f 6e .............."streamGenerateCon
87e0 74 65 6e 74 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"...........................
8800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 67 65 6e 65 72 61 74 65 43 6f 6e 74 65 6e 74 22 ..............."generateContent"
8820 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 28 )))............................(
8840 66 6f 72 6d 61 74 20 22 25 73 3a 2f 2f 25 73 25 73 2f 25 73 3a 25 73 3f 6b 65 79 3d 25 73 22 0a format."%s://%s%s/%s:%s?key=%s".
8860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8880 20 20 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 ...protocol.....................
88a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...............host.............
88c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 70 6f 69 6e 74 0a .......................endpoint.
88e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
8900 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 20 ...gptel-model..................
8920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 0a 20 20 20 20 20 20 20 ..................method........
8940 20 20 20 20 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 ............................(gpt
8960 65 6c 2d 2d 67 65 74 2d 61 70 69 2d 6b 65 79 29 29 29 29 29 29 29 0a 20 20 20 20 28 70 72 6f 67 el--get-api-key))))))).....(prog
8980 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 74 2d 67 65 74 1.backend.......(setf.(alist-get
89a0 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 0a 20 20 20 20 .name.gptel--known-backends.....
89c0 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 23 27 65 71 75 ...................nil.nil.#'equ
89e0 61 6c 29 0a 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 al).............backend))))..(pr
8a00 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 67 65 6d 69 6e 69 29 0a 3b 3b 3b 20 67 70 74 65 6c 2d 67 ovide.'gptel-gemini).;;;.gptel-g
8a20 65 6d 69 6e 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 emini.el.ends.here..............
8a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8c00 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 6b 61 67 69 2e 65 6c gptel-20240404.813/gptel-kagi.el
8c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8c60 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
8c80 30 30 31 36 31 33 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 34 31 30 00 20 30 00 00 00 0016132.00000000000.014410..0...
8ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d00 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...................
8d20 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...................
8d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8e00 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
8e20 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
8e40 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
8e60 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
8e80 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
8ea0 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
8ec0 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
8ee0 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
8f00 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
8f20 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
8f40 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
8f60 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
8f80 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
8fa0 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
8fc0 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
8fe0 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
9000 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.
9020 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
9040 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
9060 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
9080 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
90a0 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
90c0 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
90e0 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
9100 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
9120 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.
9140 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
9160 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.
9180 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.
91a0 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
91c0 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
91e0 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)).
9200 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
9220 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
9240 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).............................
9260 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)...................
9280 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
92a0 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
92c0 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)
92e0 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.(
9300 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))......
9320 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
9340 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
9360 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
9380 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
93a0 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.
93c0 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
93e0 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-
9400 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............................
9420 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.
9440 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))..................
9460 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................
9480 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).....
94a0 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."[
94c0 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)))..........
94e0 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...
9500 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
9520 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)........................
9540 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))
9560 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
9580 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)..................
95a0 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...........
95c0 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.
95e0 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)).......
9600 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))))..
9620 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
9640 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...................
9660 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
9680 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
96a0 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
96c0 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.=
96e0 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)...........
9700 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.......
9720 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..........
9740 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
9760 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)..........................
9780 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)."
97a0 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 :.".............................
97c0 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......
97e0 20 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>"
9800 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))..................
9820 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............
9840 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........
9860 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
9880 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."
98a0 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.
98c0 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
98e0 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
9900 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.
9920 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
9940 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
9960 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
9980 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
99a0 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".
99c0 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
99e0 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
9a00 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.(
9a20 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.
9a40 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.(
9a60 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)............
9a80 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)
9aa0 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
9ac0 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
9ae0 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
9b00 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)).;
9b20 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......
9b40 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
9b60 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
9b80 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
9ba0 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)
9bc0 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)))..................
9be0 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)..
9c00 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
9c20 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
9c40 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.
9c60 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
9c80 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
9ca0 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))...........(
9cc0 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
9ce0 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......
9d00 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..........
9d20 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
9d40 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
9d60 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)..............................
9d80 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
9da0 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
9dc0 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.
9de0 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
9e00 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
9e20 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
9e40 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.]
9e60 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
9e80 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-
9ea0 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
9ec0 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............
9ee0 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
9f00 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....................
9f20 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.................
9f40 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
9f60 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).............................
9f80 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.....................
9fa0 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
9fc0 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
9fe0 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.............................
a000 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
a020 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)......................
a040 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
a060 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.
a080 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)))............
a0a0 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
a0c0 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
a0e0 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
a100 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.......
a120 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............
a140 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.
a160 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))..........................
a180 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))
a1a0 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
a1c0 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...............
a1e0 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)...
a200 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 ..................."")))).......
a220 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
a240 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.....(
a260 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..
a280 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")......
a2a0 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
a2c0 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
a2e0 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))))))..........
a300 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"............
a320 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
a340 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"....................
a360 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
a380 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
a3a0 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/
a3c0 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
a3e0 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...
a400 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
a420 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
a440 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
a460 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
a480 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
a4a0 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.
a4c0 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
a4e0 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
a500 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
a520 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.
a540 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
a560 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
a580 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.
a5a0 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
a5c0 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\
a5e0 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
a600 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
a620 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
a640 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
a660 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\"..
a680 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
a6a0 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
a6c0 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
a6e0 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:.--
a700 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\"
a720 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.(
a740 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.............
a760 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
a780 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
a7a0 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...................:
a7c0 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.............
a7e0 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................
a800 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...................
a820 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..................
a840 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
a860 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
a880 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.................
a8a0 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............
a8c0 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
a8e0 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
a900 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
a920 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
a940 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").
a960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
a980 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")))))).....
a9a0 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
a9c0 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
a9e0 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.
aa00 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
aa20 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).;;
aa40 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.......
aa60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aa80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aaa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ab80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
aba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
abe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac00 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2e gptel-20240404.813/gptel-ollama.
ac20 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 00 el..............................
ac40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ac60 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
ac80 30 30 31 33 32 33 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 34 35 00 20 30 00 00 00 0013237.00000000000.014745..0...
aca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
acc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ace0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad00 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...................
ad20 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...................
ad40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ad80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ada0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
adc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ade0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ae00 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
ae20 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
ae40 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.(
ae60 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..;;
ae80 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
aea0 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
aec0 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
aee0 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
af00 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.;;.
af20 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
af40 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
af60 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
af80 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
afa0 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
afc0 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
afe0 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
b000 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
b020 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
b040 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
b060 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
b080 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
b0a0 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
b0c0 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
b0e0 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
b100 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
b120 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://
b140 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
b160 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
b180 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
b1a0 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).
b1c0 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-
b1e0 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
b200 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
b220 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.
b240 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
b260 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 ).............................(:
b280 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).....................
b2a0 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)
b2c0 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-
b2e0 63 6f 6e 74 65 78 74 20 6e 69 6c 0a 20 20 22 43 6f 6e 74 65 78 74 20 66 6f 72 20 6f 6c 6c 61 6d context.nil..."Context.for.ollam
b300 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 69 61 62 6c 65 20 a.conversations...This.variable.
b320 68 6f 6c 64 73 20 74 68 65 20 63 6f 6e 74 65 78 74 20 61 72 72 61 79 20 66 6f 72 20 63 6f 6e 76 holds.the.context.array.for.conv
b340 65 72 73 61 74 69 6f 6e 73 20 77 69 74 68 0a 4f 6c 6c 61 6d 61 20 6d 6f 64 65 6c 73 2e 22 29 0a ersations.with.Ollama.models.").
b360 0a 28 63 6c 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 .(cl-defmethod.gptel-curl--parse
b380 2d 73 74 72 65 61 6d 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 -stream.((_backend.gptel-ollama)
b3a0 20 69 6e 66 6f 29 0a 20 20 22 3b 54 4f 44 4f 3a 20 22 0a 20 20 28 77 68 65 6e 20 28 62 6f 62 70 .info)...";TODO:."...(when.(bobp
b3c0 29 0a 20 20 20 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5e 7b 22 29 0a 20 ).....(re-search-forward."^{")..
b3e0 20 20 20 28 66 6f 72 77 61 72 64 2d 6c 69 6e 65 20 30 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 63 ...(forward-line.0))...(let*.((c
b400 6f 6e 74 65 6e 74 2d 73 74 72 73 29 20 28 63 6f 6e 74 65 6e 74 29 20 28 70 74 20 28 70 6f 69 6e ontent-strs).(content).(pt.(poin
b420 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 6e 69 6c 0a 20 20 20 t))).....(condition-case.nil....
b440 20 20 20 20 20 28 77 68 69 6c 65 20 28 73 65 74 71 20 63 6f 6e 74 65 6e 74 20 28 67 70 74 65 6c .....(while.(setq.content.(gptel
b460 2d 2d 6a 73 6f 6e 2d 72 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 74 --json-read))...........(setq.pt
b480 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 6f 6e 65 20 .(point))...........(let.((done.
b4a0 28 6d 61 70 2d 65 6c 74 20 63 6f 6e 74 65 6e 74 20 3a 64 6f 6e 65 29 29 0a 20 20 20 20 20 20 20 (map-elt.content.:done))........
b4c0 20 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 20 28 6d 61 70 2d 65 6c 74 20 63 6f 6e 74 .........(response.(map-elt.cont
b4e0 65 6e 74 20 3a 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 ent.:response))).............(pu
b500 73 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 sh.response.content-strs).......
b520 20 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 ......(unless.(eq.done.:json-fal
b540 73 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 se)...............(with-current-
b560 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 65 72 29 0a buffer.(plist-get.info.:buffer).
b580 20 20 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 2d 6f 6c 6c ................(setq.gptel--oll
b5a0 61 6d 61 2d 63 6f 6e 74 65 78 74 20 28 6d 61 70 2d 65 6c 74 20 63 6f 6e 74 65 6e 74 20 3a 63 6f ama-context.(map-elt.content.:co
b5c0 6e 74 65 78 74 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 68 61 ntext)))...............(goto-cha
b5e0 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20 20 20 28 65 72 72 6f 72 20 28 r.(point-max))))).......(error.(
b600 67 6f 74 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 goto-char.pt))).....(apply.#'con
b620 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 73 29 29 29 29 0a 0a cat.(nreverse.content-strs))))..
b640 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 72 65 73 70 6f (cl-defmethod.gptel--parse-respo
b660 6e 73 65 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 72 65 73 nse.((_backend.gptel-ollama).res
b680 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 63 6f 6e 74 65 78 ponse.info)...(when-let.((contex
b6a0 74 20 28 6d 61 70 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 3a 63 6f 6e 74 65 78 74 29 29 29 0a t.(map-elt.response.:context))).
b6c0 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 74 2d ....(with-current-buffer.(plist-
b6e0 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 73 65 74 71 20 67 70 get.info.:buffer).......(setq.gp
b700 74 65 6c 2d 2d 6f 6c 6c 61 6d 61 2d 63 6f 6e 74 65 78 74 20 63 6f 6e 74 65 78 74 29 29 29 0a 20 tel--ollama-context.context)))..
b720 20 28 6d 61 70 2d 65 6c 74 20 72 65 73 70 6f 6e 73 65 20 3a 72 65 73 70 6f 6e 73 65 29 29 0a 0a .(map-elt.response.:response))..
b740 28 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 (cl-defmethod.gptel--request-dat
b760 61 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 70 72 6f 6d 70 a.((_backend.gptel-ollama).promp
b780 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 20 4f ts)..."JSON.encode.PROMPTS.for.O
b7a0 6c 6c 61 6d 61 2e 22 0a 20 20 28 6c 65 74 20 28 28 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 0a 20 llama."...(let.((prompts-plist..
b7c0 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 6f 64 65 6c 0a 20 20 ........`(:model.,gptel-model...
b7e0 20 20 20 20 20 20 20 20 20 2c 40 70 72 6f 6d 70 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 3a 73 .........,@prompts............:s
b800 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 67 70 74 tream.,(or.(and.gptel-stream.gpt
b820 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 20 20 20 el-use-curl.....................
b840 20 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 .........(gptel-backend-stream.g
b860 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 20 20 20 20 20 20 20 ptel-backend))..................
b880 20 20 20 20 3a 6a 73 6f 6e 2d 66 61 6c 73 65 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 67 70 ....:json-false)))).....(when.gp
b8a0 74 65 6c 2d 2d 6f 6c 6c 61 6d 61 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 20 20 28 70 6c 69 73 74 tel--ollama-context.......(plist
b8c0 2d 70 75 74 20 70 72 6f 6d 70 74 73 2d 70 6c 69 73 74 20 3a 63 6f 6e 74 65 78 74 20 67 70 74 65 -put.prompts-plist.:context.gpte
b8e0 6c 2d 2d 6f 6c 6c 61 6d 61 2d 63 6f 6e 74 65 78 74 29 29 0a 20 20 20 20 70 72 6f 6d 70 74 73 2d l--ollama-context)).....prompts-
b900 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 74 65 6c 2d 2d 70 61 plist))..(cl-defmethod.gptel--pa
b920 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 65 6c 2d 6f 6c 6c 61 rse-buffer.((_backend.gptel-olla
b940 6d 61 29 20 26 6f 70 74 69 6f 6e 61 6c 20 5f 6d 61 78 2d 65 6e 74 72 69 65 73 29 0a 20 20 28 6c ma).&optional._max-entries)...(l
b960 65 74 20 28 28 70 72 6f 6d 70 74 73 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 70 20 28 74 65 78 et.((prompts).........(prop.(tex
b980 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 0a 20 20 20 20 20 t-property-search-backward......
b9a0 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 20 20 20 ..........'gptel.'response......
b9c0 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 70 65 72 ..........(when.(get-char-proper
b9e0 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 74 29 29 ty.(max.(point-min).(1-.(point))
ba00 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 20 )...............................
ba20 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 20 20 ..........'gptel)...............
ba40 20 20 20 74 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 70 72 6f 70 2d 6d 61 74 63 ...t)))).....(if.(and.(prop-matc
ba60 68 2d 70 20 70 72 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 70 2d 6d 61 74 h-p.prop)..............(prop-mat
ba80 63 68 2d 76 61 6c 75 65 20 70 72 6f 70 29 29 0a 20 20 20 20 20 20 20 20 28 75 73 65 72 2d 65 72 ch-value.prop)).........(user-er
baa0 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 21 22 29 0a 20 20 20 ror."No.user.prompt.found!")....
bac0 20 20 20 28 73 65 74 71 20 70 72 6f 6d 70 74 73 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 ...(setq.prompts.(list..........
bae0 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 79 73 74 65 6d 20 67 70 74 65 6c 2d 2d 73 79 73 74 65 ............:system.gptel--syste
bb00 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 20 20 3a m-message......................:
bb20 70 72 6f 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 28 69 66 20 prompt......................(if.
bb40 28 70 72 6f 70 2d 6d 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 (prop-match-p.prop).............
bb60 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 20 20 20 20 20 20 .............(string-trim.......
bb80 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
bba0 74 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 tring-no-properties.(prop-match-
bbc0 62 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 beginning.prop).................
bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
bc00 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 70 29 29 ..........(prop-match-end.prop))
bc20 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 66 6f 72 6d ...........................(form
bc40 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 5c 6e at."[\t\r\n.]*\\(?:%s\\)?[\t\r\n
bc60 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 20 20 .]*"............................
bc80 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 6d .......(regexp-quote.(gptel-prom
bca0 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 20 pt-prefix-string))).............
bcc0 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 6e 20 5d ..............(format."[\t\r\n.]
bce0 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 20 20 20 *\\(?:%s\\)?[\t\r\n.]*".........
bd00 20 20 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 78 ..........................(regex
bd20 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 73 p-quote.(gptel-response-prefix-s
bd40 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 20 20 20 20 20 20 20 tring)))).......................
bd60 20 22 22 29 29 29 0a 20 20 20 20 20 20 70 72 6f 6d 70 74 73 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 .""))).......prompts)))..;;;###a
bd80 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 6f 6c 6c utoload.(cl-defun.gptel-make-oll
bda0 61 6d 61 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 65 61 ama.....(name.&key.curl-args.hea
bdc0 64 65 72 20 6b 65 79 20 6d 6f 64 65 6c 73 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 der.key.models.stream...........
bde0 28 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 3a 31 31 34 33 34 22 29 0a 20 20 20 20 20 20 20 (host."localhost:11434")........
be00 20 20 20 28 70 72 6f 74 6f 63 6f 6c 20 22 68 74 74 70 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 ...(protocol."http")...........(
be20 65 6e 64 70 6f 69 6e 74 20 22 2f 61 70 69 2f 67 65 6e 65 72 61 74 65 22 29 29 0a 20 20 22 52 65 endpoint."/api/generate"))..."Re
be40 67 69 73 74 65 72 20 61 6e 20 4f 6c 6c 61 6d 61 20 62 61 63 6b 65 6e 64 20 66 6f 72 20 67 70 74 gister.an.Ollama.backend.for.gpt
be60 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 65 6e 74 73 el.with.NAME...Keyword.arguments
be80 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 20 6c 69 73 :..CURL-ARGS.(optional).is.a.lis
bea0 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 74 73 2e 0a t.of.additional.Curl.arguments..
bec0 0a 48 4f 53 54 20 69 73 20 77 68 65 72 65 20 4f 6c 6c 61 6d 61 20 72 75 6e 73 20 28 77 69 74 68 .HOST.is.where.Ollama.runs.(with
bee0 20 70 6f 72 74 29 2c 20 64 65 66 61 75 6c 74 73 20 74 6f 20 6c 6f 63 61 6c 68 6f 73 74 3a 31 31 .port),.defaults.to.localhost:11
bf00 34 33 34 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 434..MODELS.is.a.list.of.availab
bf20 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
bf40 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
bf60 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
bf80 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
bfa0 6f 6c 2c 20 68 74 74 70 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 0a 45 4e 44 50 4f 49 4e 54 20 28 ol,.http.by.default...ENDPOINT.(
bfc0 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 6f optional).is.the.API.endpoint.fo
bfe0 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 61 70 r.completions,.defaults.to.\"/ap
c000 69 2f 67 65 6e 65 72 61 74 65 5c 22 2e 0a 0a 48 45 41 44 45 52 20 28 6f 70 74 69 6f 6e 61 6c 29 i/generate\"...HEADER.(optional)
c020 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
c040 6e 64 20 77 69 74 68 20 65 61 63 68 0a 72 65 71 75 65 73 74 2e 20 20 49 74 20 73 68 6f 75 6c 64 nd.with.each.request...It.should
c060 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 6e 20 74 68 61 74 20 .be.an.alist.or.a.function.that.
c080 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 5c 22 43 6f 6e 74 65 retuns.an.alist,.like:.((\"Conte
c0a0 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 2f 6a 73 6f 6e 5c 22 nt-Type\"...\"application/json\"
c0c0 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 61 72 69 61 62 6c 65 ))..KEY.(optional).is.a.variable
c0e0 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 0a .whose.value.is.the.API.key,.or.
c100 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 20 6b 65 79 2e 20 20 function.that.returns.the.key...
c120 54 68 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 0a 66 This.is.typically.not.required.f
c140 6f 72 20 6c 6f 63 61 6c 20 6d 6f 64 65 6c 73 20 6c 69 6b 65 20 4f 6c 6c 61 6d 61 2e 0a 0a 45 78 or.local.models.like.Ollama...Ex
c160 61 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 6f 6c 6c 61 ample:.-------..(gptel-make-olla
c180 6d 61 0a 20 20 5c 22 4f 6c 6c 61 6d 61 5c 22 0a 20 20 3a 68 6f 73 74 20 5c 22 6c 6f 63 61 6c 68 ma...\"Ollama\"...:host.\"localh
c1a0 6f 73 74 3a 31 31 34 33 34 5c 22 0a 20 20 3a 6d 6f 64 65 6c 73 20 5c 5c 3d 27 28 5c 22 6d 69 73 ost:11434\"...:models.\\='(\"mis
c1c0 74 72 61 6c 3a 6c 61 74 65 73 74 5c 22 29 0a 20 20 3a 73 74 72 65 61 6d 20 74 29 22 0a 20 20 28 tral:latest\")...:stream.t)"...(
c1e0 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 62 61 63 declare.(indent.1))...(let.((bac
c200 6b 65 6e 64 20 28 67 70 74 65 6c 2d 2d 6d 61 6b 65 2d 6f 6c 6c 61 6d 61 0a 20 20 20 20 20 20 20 kend.(gptel--make-ollama........
c220 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 2d 61 72 67 73 0a ...........:curl-args.curl-args.
c240 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 6d 65 0a 20 20 20 ..................:name.name....
c260 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 20 20 20 20 20 20 ...............:host.host.......
c280 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 0a 20 20 20 20 20 ............:header.header......
c2a0 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 20 20 .............:key.key...........
c2c0 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 20 20 20 20 20 20 ........:models.models..........
c2e0 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 6c 0a 20 20 20 20 .........:protocol.protocol.....
c300 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 64 70 6f 69 6e 74 ..............:endpoint.endpoint
c320 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 20 73 74 72 65 61 ...................:stream.strea
c340 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 69 66 20 70 72 6f m...................:url.(if.pro
c360 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 20 20 20 20 20 20 tocol...........................
c380 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 73 74 20 65 6e 64 .(concat.protocol."://".host.end
c3a0 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 20 20 20 20 20 20 point)..........................
c3c0 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 0a 20 20 20 20 28 (concat.host.endpoint))))).....(
c3e0 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 74 prog1.backend.......(setf.(alist
c400 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 0a -get.name.gptel--known-backends.
c420 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 23 .......................nil.nil.#
c440 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 6e 'equal)...................backen
c460 64 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 29 0a 3b d))))..(provide.'gptel-ollama).;
c480 3b 3b 20 67 70 74 65 6c 2d 6f 6c 6c 61 6d 61 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 0a 0a 00 ;;.gptel-ollama.el.ends.here....
c4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c600 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 6f 70 65 6e 61 69 2e gptel-20240404.813/gptel-openai.
c620 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 00 el..............................
c640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c660 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
c680 30 30 32 33 30 31 33 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 37 34 34 00 20 30 00 00 00 0023013.00000000000.014744..0...
c6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c700 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...................
c720 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...................
c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c800 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
c820 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
c840 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.(
c860 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..;;
c880 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
c8a0 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>..;;.
c8c0 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
c8e0 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
c900 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
c920 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.
c940 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
c960 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
c980 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
c9a0 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
c9c0 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.
c9e0 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,.;;.
ca00 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
ca20 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.;
ca40 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
ca60 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.
ca80 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
caa0 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
cac0 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
cae0 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
cb00 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.<
cb20 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/>..
cb40 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
cb60 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.
cb80 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
cba0 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...(
cbc0 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)
cbe0 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
cc00 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
cc20 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
cc40 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
cc60 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--
cc80 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
cca0 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
ccc0 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
cce0 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
cd00 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
cd20 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
cd40 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
cd60 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
cd80 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").(
cda0 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
cdc0 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
cde0 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
ce00 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
ce20 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
ce40 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
ce60 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
ce80 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...
cea0 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)
cec0 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
cee0 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-
cf00 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".())...
cf20 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
cf40 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
cf60 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).
cf80 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).
cfa0 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..
cfc0 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.........
cfe0 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).....(
d000 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-
d020 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
d040 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)).....`(
d060 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))..
d080 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))))..;
d0a0 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
d0c0 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
d0e0 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
d100 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)....................
d120 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))..
d140 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
d160 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
d180 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
d1a0 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
d1c0 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)......
d1e0 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.
d200 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)............................
d220 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
d240 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
d260 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
d280 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))....
d2a0 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
d2c0 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:".
d2e0 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
d300 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
d320 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\\]")...............
d340 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
d360 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)).......................
d380 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......
d3a0 20 20 20 20 20 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
d3c0 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)))....
d3e0 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.
d400 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)))....
d420 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
d440 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.......
d460 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))
d480 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
d4a0 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
d4c0 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
d4e0 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).
d500 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
d520 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
d540 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.
d560 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
d580 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
d5a0 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
d5c0 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
d5e0 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.[,@
d600 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
d620 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
d640 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
d660 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))
d680 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
d6a0 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
d6c0 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
d6e0 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)
d700 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....
d720 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
d740 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
d760 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
d780 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
d7a0 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
d7c0 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)).....
d7e0 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
d800 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)
d820 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
d840 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.........
d860 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
d880 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.(
d8a0 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
d8c0 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)))................
d8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
d900 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).......................
d920 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
d940 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
d960 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")...............
d980 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...................(
d9a0 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....................(
d9c0 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.(
d9e0 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)......
da00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
da20 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
da40 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.
da60 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.]*
da80 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
daa0 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-
dac0 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
dae0 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
db00 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.]*"..........................
db20 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-
db40 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
db60 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.(
db80 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
dba0 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"...........
dbc0 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
dbe0 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)))..;;;#
dc00 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-
dc20 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.
dc40 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
dc60 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-
dc80 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))..
dca0 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
dcc0 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)))
dce0 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.
dd00 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
dd20 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
dd40 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
dd60 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
dd80 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
dda0 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
ddc0 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
dde0 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.
de00 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
de20 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
de40 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
de60 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
de80 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
dea0 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
dec0 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.
dee0 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
df00 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
df20 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
df40 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
df60 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
df80 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
dfa0 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:.((
dfc0 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
dfe0 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
e000 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
e020 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
e040 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))...
e060 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
e080 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.
e0a0 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
e0c0 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
e0e0 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
e100 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.
e120 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
e140 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
e160 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
e180 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
e1a0 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
e1c0 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.................
e1e0 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."://
e200 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)................
e220 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)
e240 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
e260 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
e280 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.......................
e2a0 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)...............
e2c0 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.;;;##
e2e0 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
e300 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
e320 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").
e340 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.().`((
e360 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
e380 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-
e3a0 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
e3c0 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
e3e0 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
e400 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
e420 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.
e440 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
e460 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
e480 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
e4a0 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
e4c0 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.(
e4e0 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
e500 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
e520 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
e540 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
e560 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
e580 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
e5a0 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
e5c0 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\"...
e5e0 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
e600 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
e620 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
e640 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:.---
e660 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
e680 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
e6a0 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
e6c0 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
e6e0 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
e700 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
e720 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
e740 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
e760 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
e780 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..................
e7a0 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...........
e7c0 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..............
e7e0 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.................
e800 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................
e820 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
e840 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...................:
e860 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...............
e880 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..........
e8a0 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.........
e8c0 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.....
e8e0 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
e900 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)....
e920 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
e940 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
e960 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.
e980 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...........
e9a0 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)...
e9c0 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
e9e0 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
ea00 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
ea20 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.
ea40 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
ea60 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
ea80 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
eaa0 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
eac0 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
eae0 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
eb00 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.
eb20 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
eb40 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
eb60 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
eb80 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
eba0 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
ebc0 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/
ebe0 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)
ec00 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
ec20 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.
ec40 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
ec60 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
ec80 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\")
eca0 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.
ecc0 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
ece0 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
ed00 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
ed20 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
ed40 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
ed60 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
ed80 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\"..:
eda0 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
edc0 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
ede0 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
ee00 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......................
ee20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ee80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
eee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ef80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
efe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f000 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 6f 72 67 2e 65 6c 00 gptel-20240404.813/gptel-org.el.
f020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f060 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
f080 30 30 34 34 34 30 37 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 32 37 32 00 20 30 00 00 00 0044407.00000000000.014272..0...
f0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f100 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...................
f120 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...................
f140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
f200 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
f220 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
f240 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.(
f260 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..;;
f280 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
f2a0 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
f2c0 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
f2e0 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
f300 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
f320 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
f340 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
f360 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
f380 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.;
f3a0 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
f3c0 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
f3e0 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
f400 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
f420 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.
f440 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
f460 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
f480 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
f4a0 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...;;
f4c0 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
f4e0 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
f500 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...
f520 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
f540 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:..;
f560 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.
f580 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
f5a0 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
f5c0 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
f5e0 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
f600 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-
f620 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
f640 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
f660 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
f680 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
f6a0 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
f6c0 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
f6e0 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-
f700 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
f720 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.
f740 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
f760 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
f780 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
f7a0 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
f7c0 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
f7e0 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.
f800 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
f820 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
f840 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
f860 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
f880 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
f8a0 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.
f8c0 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
f8e0 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
f900 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.
f920 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
f940 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.
f960 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
f980 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
f9a0 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:..-----.
f9c0 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
f9e0 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.
fa00 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
fa20 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
fa40 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
fa60 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
fa80 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
faa0 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
fac0 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
fae0 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
fb00 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
fb20 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."..
fb40 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
fb60 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
fb80 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
fba0 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.()..."
fbc0 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,.
fbe0 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
fc00 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
fc20 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
fc40 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
fc60 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)
fc80 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
fca0 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
fcc0 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
fce0 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
fd00 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
fd20 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...
fd40 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
fd60 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)..........
fd80 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
fda0 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
fdc0 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'.")).....
fde0 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
fe00 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-
fe20 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")..
fe40 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
fe60 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.........................
fe80 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
fea0 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...............................
fec0 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.....
fee0 20 20 20 20 20 20 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
ff00 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.........
ff20 20 20 20 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-
ff40 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 +"."-"..........................
ff60 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)))...
ff80 20 20 20 20 20 20 20 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
ffa0 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).
ffc0 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".
ffe0 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
10000 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.`
10020 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
10040 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
10060 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
10080 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
100a0 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.(&
100c0 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
100e0 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
10100 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..
10120 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
10140 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
10160 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
10180 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
101a0 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
101c0 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.
101e0 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
10200 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.
10220 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
10240 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
10260 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-
10280 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.........................
102a0 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
102c0 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
102e0 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
10300 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.
10320 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...
10340 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
10360 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
10380 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
103a0 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
103c0 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
103e0 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
10400 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))..................
10420 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
10440 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..........................
10460 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)
10480 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............
104a0 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
104c0 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)).........
104e0 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............
10500 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.................
10520 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)
10540 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.......
10560 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
10580 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.......
105a0 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
105c0 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
105e0 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.
10600 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........................
10620 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.
10640 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..........
10660 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,.
10680 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
106a0 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
106c0 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.
106e0 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.............
10700 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
10720 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..........................(
10740 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
10760 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.
10780 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)..........
107a0 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
107c0 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
107e0 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)))).
10800 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...
10820 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
10840 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...........................
10860 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
10880 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).....................
108a0 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.....
108c0 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
108e0 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
10900 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).......................
10920 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.................
10940 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
10960 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))............
10980 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
109a0 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
109c0 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............
109e0 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
10a00 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)......
10a20 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
10a40 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
10a60 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))...............(
10a80 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))....
10aa0 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
10ac0 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)))))
10ae0 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
10b00 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
10b20 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))))..
10b40 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
10b60 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
10b80 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
10ba0 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
10bc0 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.
10be0 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
10c00 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
10c20 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,.
10c40 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
10c60 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
10c80 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
10ca0 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
10cc0 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.
10ce0 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
10d00 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)......
10d20 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.
10d40 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)).................
10d60 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
10d80 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)......................
10da0 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
10dc0 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...
10de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
10e00 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
10e20 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.
10e40 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)
10e60 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
10e80 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
10ea0 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
10ec0 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
10ee0 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.
10f00 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
10f20 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--
10f40 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
10f60 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
10f80 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..;
10fa0 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
10fc0 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
10fe0 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
11000 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
11020 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
11040 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
11060 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."...
11080 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
110a0 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
110c0 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
110e0 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.
11100 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))...
11120 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_
11140 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"..........
11160 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
11180 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..
111a0 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
111c0 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
111e0 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
11200 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
11220 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...........................
11240 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
11260 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
11280 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
112a0 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
112c0 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)))
112e0 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.
11300 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
11320 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
11340 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
11360 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'.".
11380 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).
113a0 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......
113c0 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.((
113e0 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
11400 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"))).............
11420 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
11440 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
11460 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
11480 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
114a0 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.((
114c0 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
114e0 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).................
11500 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
11520 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)))).............(
11540 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
11560 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))..........
11580 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
115a0 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)...............
115c0 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
115e0 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................
11600 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
11620 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
11640 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.
11660 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
11680 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]"............
116a0 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."))..
116c0 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)).........
116e0 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
11700 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
11720 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-
11740 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)).......
11760 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
11780 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))))......
117a0 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.
117c0 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
117e0 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
11800 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)))))
11820 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
11840 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
11860 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
11880 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
118a0 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
118c0 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
118e0 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
11900 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
11920 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
11940 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
11960 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
11980 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.
119a0 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
119c0 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)
119e0 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
11a00 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
11a20 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
11a40 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
11a60 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
11a80 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".......
11aa0 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
11ac0 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
11ae0 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"..........
11b00 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"."\\
11b20 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))......
11b40 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-
11b60 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
11b80 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
11ba0 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
11bc0 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
11be0 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.
11c00 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
11c20 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
11c40 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
11c60 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
11c80 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
11ca0 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))..
11cc0 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
11ce0 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
11d00 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
11d20 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
11d40 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.
11d60 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)).....
11d80 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.
11da0 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)).......................(
11dc0 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-
11de0 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)))...............
11e00 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
11e20 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"....................
11e40 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
11e60 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)))......
11e80 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.(=.(
11ea0 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
11ec0 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)).........................
11ee0 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)).............
11f00 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-
11f20 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
11f40 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
11f60 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
11f80 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
11fa0 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
11fc0 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
11fe0 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
12000 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
12020 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.....(
12040 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
12060 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
12080 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
120a0 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
120c0 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
120e0 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
12100 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
12120 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").........
12140 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."```"))..
12160 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
12180 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).........................(
121a0 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)..................
121c0 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.")..
121e0 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
12200 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)...
12220 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
12240 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")))...........
12260 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."=")))......
12280 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................((
122a0 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:]]\\
122c0 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
122e0 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
12300 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\\)
12320 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\\}".....................
12340 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
12360 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
12380 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)))).........("*".....
123a0 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
123c0 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
123e0 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\\)
12400 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 \\(?:_\\|\\*\\)"................
12420 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)
12440 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)))...............
12460 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:]
12480 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
124a0 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........
124c0 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
124e0 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
12500 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.(
12520 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))................
12540 20 20 20 20 20 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
12560 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).............
12580 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
125a0 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").....................
125c0 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."\\(?:[[
125e0 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\\)\\(?:_\\|\\*\\)"
12600 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 ................................
12620 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).
12640 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))))).................
12660 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)
12680 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
126a0 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."/"))))...........
126c0 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
126e0 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)).
12700 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."\\(?:$
12720 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:]]"))....
12740 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
12760 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-
12780 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."-")))))).....(
127a0 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--
127c0 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
127e0 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
12800 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
12820 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
12840 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..
12860 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
12880 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
128a0 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
128c0 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
128e0 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
12900 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
12920 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)...........
12940 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
12960 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)..........................
12980 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")..
129a0 20 20 20 20 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.
129c0 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.
129e0 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
12a00 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
12a20 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
12a40 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
12a60 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.
12a80 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
12aa0 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.
12ac0 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
12ae0 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
12b00 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
12b20 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....
12b40 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-
12b60 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*"))....
12b80 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))
12ba0 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).....
12bc0 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.............(
12be0 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._)...............(
12c00 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.
12c20 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-
12c40 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)............
12c60 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))....
12c80 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
12ca0 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
12cc0 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-
12ce0 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)..
12d00 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
12d20 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
12d40 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
12d60 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
12d80 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
12da0 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
12dc0 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
12de0 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
12e00 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
12e20 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....
12e40 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
12e60 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)
12e80 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
12ea0 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).................("`".....
12ec0 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.
12ee0 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...........
12f00 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)..........
12f20 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)
12f40 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).?`))..........
12f60 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)........
12f80 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
12fa0 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)))..
12fc0 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
12fe0 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.........
13000 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)........
13020 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
13040 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
13060 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.........................
13080 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
130a0 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..........................
130c0 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.
130e0 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.......................
13100 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
13120 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)...................
13140 20 20 20 20 20 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
13160 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."^```$"))))............
13180 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
131a0 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
131c0 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
131e0 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............
13200 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)
13220 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
13240 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)))....................;
13260 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
13280 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..................
132a0 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
132c0 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....
132e0 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)...
13300 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.
13320 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)...............
13340 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
13360 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))).
13380 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.
133a0 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
133c0 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.(>
133e0 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))...
13400 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
13420 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......................
13440 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)...........
13460 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
13480 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))..........
134a0 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
134c0 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
134e0 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
13500 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
13520 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)))))........
13540 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:.
13560 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.
13580 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
135a0 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)))..........
135c0 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...................
135e0 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:]]
13600 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
13620 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))..................
13640 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:]]
13660 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\\}".............
13680 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
136a0 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)))...........
136c0 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))))....
136e0 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
13700 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)))..............
13720 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............
13740 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.........
13760 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
13780 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))..................
137a0 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.......................
137c0 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................
137e0 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
13800 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
13820 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:]]\\|$\\)")..........
13840 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...
13860 20 20 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 .........................."\\(?:
13880 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:]]\\)\\(?:_\\|
138a0 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:]]\\
138c0 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 |$\\)"))........................
138e0 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
13900 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
13920 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
13940 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."/")).......................(
13960 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\\
13980 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:]]")..................
139a0 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
139c0 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......................
139e0 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.
13a00 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."-")))))))))........
13a20 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
13a40 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).
13a60 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
13a80 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)).......
13aa0 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
13ac0 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.
13ae0 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
13b00 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..........................
13b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13c00 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 70 6b 67 2e 65 6c 00 gptel-20240404.813/gptel-pkg.el.
13c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13c60 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
13c80 30 30 30 30 36 37 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 32 36 34 00 20 30 00 00 00 0000676.00000000000.014264..0...
13ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13d00 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...................
13d20 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...................
13d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13e00 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 30 (define-package."gptel"."2024040
13e20 34 2e 38 31 33 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 72 4.813"."Interact.with.ChatGPT.or
13e40 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 0a .other.LLMs"...'((emacs."27.1").
13e60 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 6d ....(transient."0.4.0").....(com
13e80 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 37 62 36 65 pat."29.1.4.1"))...:commit."7b6e
13ea0 33 63 35 39 30 30 39 62 39 37 64 63 65 66 61 66 65 31 32 34 61 61 62 33 61 32 39 36 36 33 63 63 3c59009b97dcefafe124aab3a29663cc
13ec0 62 30 38 38 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 69 b088".:authors...'(("Karthik.Chi
13ee0 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 28 kmagalur"))...:maintainers...'((
13f00 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 74 "Karthik.Chikmagalur"))...:maint
13f20 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 29 ainer...'("Karthik.Chikmagalur")
13f40 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 0a ...:keywords...'("convenience").
13f60 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 68 ..:url."https://github.com/karth
13f80 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 0a ink/gptel").;;.Local.Variables:.
13fa0 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 00 ;;.no-byte-compile:.t.;;.End:...
13fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
13fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14000 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 gptel-20240404.813/gptel-transie
14020 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 00 nt.el...........................
14040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14060 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
14080 30 31 30 37 37 33 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 35 31 36 00 20 30 00 00 00 0107735.00000000000.015516..0...
140a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
140c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
140e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14100 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...................
14120 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...................
14140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
141a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
141c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
141e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
14200 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
14220 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
14240 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.(
14260 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..;;
14280 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
142a0 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
142c0 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
142e0 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
14300 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
14320 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
14340 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
14360 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
14380 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.
143a0 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
143c0 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.
143e0 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..
14400 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.
14420 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
14440 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;
14460 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
14480 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
144a0 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
144c0 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
144e0 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
14500 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
14520 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.;;.
14540 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
14560 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
14580 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:..;;..;;;
145a0 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
145c0 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)..
145e0 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-
14600 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
14620 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
14640 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
14660 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
14680 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
146a0 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
146c0 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
146e0 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-
14700 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
14720 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
14740 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
14760 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
14780 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
147a0 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
147c0 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.....
147e0 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)
14800 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
14820 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
14840 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).
14860 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
14880 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
148a0 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
148c0 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)
148e0 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
14900 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).......................
14920 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))
14940 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
14960 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
14980 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
149a0 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...
149c0 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
149e0 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-
14a00 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
14a20 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
14a40 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
14a60 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
14a80 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
14aa0 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.
14ac0 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
14ae0 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
14b00 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))).....(
14b20 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
14b40 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
14b60 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")).....;;...(
14b80 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
14ba0 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.'
14bc0 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
14be0 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
14c00 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
14c20 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
14c40 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)...................
14c60 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
14c80 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))
14ca0 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
14cc0 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
14ce0 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
14d00 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
14d20 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
14d40 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
14d60 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.".
14d80 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-
14da0 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.
14dc0 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)))
14de0 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
14e00 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
14e20 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.
14e40 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
14e60 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)......."
14e80 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
14ea0 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)
14ec0 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.(
14ee0 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
14f00 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."...(
14f20 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)..
14f40 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
14f60 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
14f80 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
14fa0 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
14fc0 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)....
14fe0 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-
15000 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")..........
15020 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
15040 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
15060 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
15080 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
150a0 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
150c0 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:
150e0 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
15100 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"..."
15120 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.
15140 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
15160 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
15180 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
151a0 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.
151c0 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.()..
151e0 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.
15200 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
15220 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
15240 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."
15260 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
15280 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
152a0 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
152c0 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
152e0 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....
15300 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-
15320 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
15340 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
15360 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
15380 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
153a0 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)....................(
153c0 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.....................
153e0 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
15400 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))................
15420 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
15440 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
15460 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-
15480 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.(
154a0 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.
154c0 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
154e0 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.".......
15500 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
15520 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
15540 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)...............
15560 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.
15580 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
155a0 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.(
155c0 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
155e0 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)))..........
15600 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).(
15620 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)).....
15640 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
15660 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......
15680 20 20 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-
156a0 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.......
156c0 20 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-
156e0 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
15700 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.").........
15720 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
15740 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.
15760 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
15780 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)).........
157a0 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
157c0 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")..........
157e0 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
15800 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
15820 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-
15840 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
15860 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
15880 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
158a0 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
158c0 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.
158e0 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)))).
15900 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)....
15920 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......
15940 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
15960 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).
15980 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
159a0 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
159c0 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-
159e0 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
15a00 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
15a20 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
15a40 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
15a60 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
15a80 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
15aa0 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
15ac0 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
15ae0 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
15b00 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")
15b20 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.:
15b40 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
15b60 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
15b80 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.")..(
15ba0 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
15bc0 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
15be0 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
15c00 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
15c20 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-
15c40 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
15c60 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
15c80 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.
15ca0 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
15cc0 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
15ce0 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
15d00 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.........
15d20 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
15d40 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
15d60 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."|"
15d80 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)....
15da0 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
15dc0 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
15de0 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
15e00 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
15e20 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-
15e40 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.:
15e60 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
15e80 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.
15ea0 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
15ec0 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.
15ee0 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
15f00 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
15f20 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).......................
15f40 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
15f60 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
15f80 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
15fa0 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
15fc0 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
15fe0 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
16000 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
16020 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
16040 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
16060 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
16080 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
160a0 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
160c0 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)..
160e0 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)....(
16100 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
16120 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
16140 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
16160 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.
16180 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
161a0 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
161c0 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)).":".......
161e0 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
16200 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--
16220 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))...............
16240 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
16260 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
16280 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
162a0 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
162c0 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
162e0 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).......
16300 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)......
16320 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-
16340 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
16360 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
16380 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
163a0 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
163c0 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)..
163e0 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
16400 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
16420 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)...(
16440 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
16460 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
16480 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
164a0 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
164c0 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
164e0 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
16500 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
16520 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
16540 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
16560 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.".
16580 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))
165a0 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
165c0 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.
165e0 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
16600 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
16620 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
16640 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))......
16660 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-
16680 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
166a0 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-
166c0 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))).......(
166e0 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..........
16700 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
16720 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))...........
16740 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
16760 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)))........................
16780 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
167a0 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..............................
167c0 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)..........
167e0 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
16800 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
16820 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)))..
16840 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
16860 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
16880 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
168a0 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.
168c0 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."...")).....................
168e0 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
16900 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
16920 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)
16940 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
16960 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
16980 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
169a0 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.'
169c0 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
169e0 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
16a00 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
16a20 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
16a40 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".
16a60 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.
16a80 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
16aa0 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.
16ac0 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
16ae0 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...
16b00 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
16b20 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
16b40 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-
16b60 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-
16b80 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)))....[
16ba0 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"."
16bc0 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
16be0 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
16c00 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
16c20 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.
16c40 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
16c60 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)...
16c80 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).....
16ca0 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
16cc0 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
16ce0 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
16d00 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".....
16d20 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")..
16d40 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")
16d60 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
16d80 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"....
16da0 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")..
16dc0 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".....
16de0 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
16e00 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
16e20 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
16e40 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
16e60 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
16e80 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..............
16ea0 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
16ec0 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)."*")).........
16ee0 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)..........
16f00 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.
16f20 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))).......
16f40 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
16f60 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.
16f80 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.
16fa0 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.(
16fc0 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)))))))).
16fe0 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"......:
17000 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
17020 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
17040 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
17060 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
17080 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
170a0 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")]
170c0 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-
170e0 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".
17100 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-
17120 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
17140 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
17160 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
17180 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
171a0 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
171c0 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
171e0 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
17200 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
17220 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
17240 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).......
17260 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")).
17280 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
172a0 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
172c0 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"."
172e0 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).....
17300 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
17320 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--
17340 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
17360 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"
17380 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
173a0 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..
173c0 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
173e0 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
17400 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)]
17420 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
17440 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
17460 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
17480 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.().......
174a0 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
174c0 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."........
174e0 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
17500 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
17520 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
17540 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
17560 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
17580 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
175a0 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.()........
175c0 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.
175e0 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."........(
17600 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
17620 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
17640 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-
17660 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
17680 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
176a0 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
176c0 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
176e0 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
17700 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
17720 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
17740 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.
17760 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."...(
17780 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
177a0 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
177c0 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
177e0 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
17800 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......
17820 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.
17840 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))........
17860 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).....
17880 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)
178a0 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
178c0 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)).
178e0 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))...
17900 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
17920 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
17940 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
17960 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...
17980 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
179a0 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
179c0 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
179e0 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
17a00 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,....
17a20 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
17a40 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
17a60 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
17a80 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
17aa0 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))............
17ac0 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
17ae0 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).".".........................
17b00 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.'(
17b20 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))............
17b40 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...
17b60 20 20 20 20 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
17b80 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.............................
17ba0 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 ..."("..........................
17bc0 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...........
17be0 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"."."..
17c00 20 20 20 20 20 20 20 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 ...............................(
17c20 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.
17c40 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))........
17c60 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 ........................")")....
17c80 20 20 20 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
17ca0 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))......................
17cc0 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).......
17ce0 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
17d00 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"......................
17d20 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"."...."
17d40 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
17d60 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
17d80 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)))...................
17da0 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
17dc0 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.....
17de0 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-
17e00 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
17e20 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).......
17e40 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
17e60 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.......
17e80 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.
17ea0 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
17ec0 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
17ee0 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.....
17f00 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
17f20 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.......;;.
17f40 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
17f60 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
17f80 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
17fa0 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....................
17fc0 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
17fe0 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
18000 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
18020 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
18040 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.()..
18060 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
18080 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
180a0 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
180c0 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
180e0 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.
18100 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
18120 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
18140 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
18160 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.
18180 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
181a0 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
181c0 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
181e0 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
18200 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
18220 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."...
18240 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
18260 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"."....
18280 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-
182a0 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
182c0 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
182e0 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
18300 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
18320 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)]]....[:
18340 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
18360 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--
18380 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
183a0 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.
183c0 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-
183e0 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
18400 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.
18420 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.().
18440 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"...
18460 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
18480 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
184a0 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
184c0 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
184e0 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))
18500 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
18520 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
18540 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
18560 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
18580 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
185a0 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
185c0 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
185e0 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-
18600 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-
18620 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
18640 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
18660 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
18680 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))
186a0 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
186c0 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
186e0 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
18700 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
18720 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.()
18740 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
18760 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
18780 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
187a0 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
187c0 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
187e0 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"...:
18800 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
18820 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
18840 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
18860 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
18880 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.
188a0 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
188c0 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
188e0 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
18900 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.
18920 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
18940 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.
18960 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
18980 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."
189a0 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
189c0 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
189e0 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
18a00 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.
18a20 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.".
18a40 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.
18a60 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
18a80 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
18aa0 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
18ac0 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-
18ae0 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
18b00 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
18b20 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.
18b40 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
18b60 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
18b80 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
18ba0 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
18bc0 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
18be0 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
18c00 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
18c20 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
18c40 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
18c60 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.(
18c80 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
18ca0 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
18cc0 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
18ce0 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
18d00 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
18d20 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
18d40 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
18d60 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:."..
18d80 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
18da0 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..
18dc0 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"
18de0 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
18e00 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........
18e20 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
18e40 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.............
18e60 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
18e80 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).....
18ea0 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.
18ec0 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
18ee0 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.
18f00 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.....
18f20 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
18f40 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)
18f60 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
18f80 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
18fa0 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.()
18fc0 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."...:
18fe0 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.
19000 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
19020 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
19040 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
19060 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.
19080 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
190a0 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
190c0 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
190e0 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)..
19100 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
19120 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-
19140 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
19160 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
19180 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
191a0 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
191c0 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
191e0 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
19200 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.
19220 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
19240 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
19260 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.
19280 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
192a0 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:..-
192c0 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
192e0 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
19300 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.
19320 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
19340 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
19360 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
19380 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
193a0 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
193c0 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
193e0 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)..........
19400 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
19420 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))).........
19440 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
19460 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.
19480 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.":"..
194a0 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"...
194c0 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
194e0 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
19500 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.
19520 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
19540 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
19560 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
19580 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)........................
195a0 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".
195c0 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
195e0 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.
19600 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
19620 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
19640 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
19660 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:."
19680 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
196a0 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..
196c0 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
196e0 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
19700 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.
19720 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
19740 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
19760 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"..
19780 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
197a0 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
197c0 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
197e0 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
19800 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
19820 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
19840 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-
19860 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
19880 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
198a0 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-
198c0 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
198e0 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
19900 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
19920 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
19940 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))..
19960 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"
19980 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
199a0 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
199c0 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
199e0 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)
19a00 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........
19a20 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
19a40 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)).....
19a60 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).....
19a80 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
19aa0 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...................(
19ac0 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)))
19ae0 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).
19b00 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
19b20 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
19b40 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
19b60 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
19b80 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
19ba0 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
19bc0 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
19be0 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
19c00 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
19c20 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"
19c40 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)..
19c60 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.............
19c80 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).............
19ca0 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
19cc0 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-
19ce0 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
19d00 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
19d20 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
19d40 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)..
19d60 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
19d80 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.
19da0 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
19dc0 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
19de0 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
19e00 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
19e20 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
19e40 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.
19e60 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-
19e80 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."..........................
19ea0 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....................
19ec0 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.
19ee0 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-
19f00 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
19f20 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
19f40 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)...........
19f60 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
19f80 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
19fa0 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
19fc0 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
19fe0 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
1a000 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....
1a020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1a040 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
1a060 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......................
1a080 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
1a0a0 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......
1a0c0 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)..
1a0e0 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
1a100 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
1a120 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)..........................
1a140 20 20 20 20 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
1a160 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
1a180 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....
1a1a0 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
1a1c0 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
1a1e0 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...........
1a200 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...
1a220 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-
1a240 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).(
1a260 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)))....................
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 20 20 20 27 67 70 .............................'gp
1a2a0 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)
1a2c0 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))
1a2e0 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-
1a300 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))))))).........(
1a320 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
1a340 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))...
1a360 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.
1a380 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..
1a3a0 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
1a3c0 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)).........
1a3e0 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.
1a400 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-
1a420 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.
1a440 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................
1a460 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
1a480 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))..............
1a4a0 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)).....
1a4c0 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)
1a4e0 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
1a500 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-
1a520 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)))
1a540 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
1a560 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
1a580 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
1a5a0 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................
1a5c0 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...
1a5e0 20 20 20 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
1a600 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).................
1a620 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)..
1a640 20 20 20 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
1a660 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..................
1a680 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...
1a6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1a6c0 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:.".........
1a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1a700 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..........
1a720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1a740 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))))))..........
1a760 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))
1a780 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.
1a7a0 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
1a7c0 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
1a7e0 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...............(
1a800 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).....
1a820 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
1a840 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-
1a860 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)..
1a880 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
1a8a0 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
1a8c0 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
1a8e0 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
1a900 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)...............
1a920 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.
1a940 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))
1a960 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
1a980 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
1a9a0 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
1a9c0 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
1a9e0 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))))).
1aa00 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
1aa20 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
1aa40 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)).............
1aa60 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.............
1aa80 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
1aaa0 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))........
1aac0 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............
1aae0 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-
1ab00 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)...........
1ab20 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...........
1ab40 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 3b 3b 20 4e ...:dry-run.dry-run)........;;.N
1ab60 4f 54 45 3a 20 50 6f 73 73 69 62 6c 65 20 66 75 74 75 72 65 20 72 61 63 65 20 63 6f 6e 64 69 74 OTE:.Possible.future.race.condit
1ab80 69 6f 6e 20 68 65 72 65 20 69 66 20 45 6d 61 63 73 20 65 76 65 72 20 64 72 6f 70 73 20 74 68 65 ion.here.if.Emacs.ever.drops.the
1aba0 20 47 49 4c 2e 0a 20 20 20 20 20 20 3b 3b 20 54 68 65 20 48 54 54 50 20 72 65 71 75 65 73 74 20 .GIL........;;.The.HTTP.request.
1abc0 63 61 6c 6c 62 61 63 6b 20 6d 69 67 68 74 20 6d 6f 64 69 66 79 20 74 68 65 20 62 75 66 66 65 72 callback.might.modify.the.buffer
1abe0 20 62 65 66 6f 72 65 20 74 68 65 20 69 6e 2d 70 6c 61 63 65 0a 20 20 20 20 20 20 3b 3b 20 74 65 .before.the.in-place.......;;.te
1ac00 78 74 20 69 73 20 6b 69 6c 6c 65 64 20 62 65 6c 6f 77 2e 0a 20 20 20 20 20 20 28 77 68 65 6e 20 xt.is.killed.below........(when.
1ac20 69 6e 2d 70 6c 61 63 65 0a 20 20 20 20 20 20 20 20 3b 3b 20 4b 69 6c 6c 20 74 68 65 20 6c 61 74 in-place.........;;.Kill.the.lat
1ac40 65 73 74 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 65 67 0a 20 20 est.prompt.........(let.((beg...
1ac60 20 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 .............(if.(use-region-p).
1ac80 20 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 67 69 6e ...................(region-begin
1aca0 6e 69 6e 67 29 0a 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 ning)..................(save-exc
1acc0 75 72 73 69 6f 6e 0a 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 ursion....................(text-
1ace0 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........
1ad00 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...
1ad20 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 63 68 61 ..................(when.(get-cha
1ad40 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 31 2d 20 r-property.(max.(point-min).(1-.
1ad60 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 20 20 20 (point))).......................
1ad80 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)..
1ada0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 29 29 0a 20 20 20 20 20 20 20 .....................t))........
1adc0 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 ............(point))))..........
1ade0 20 20 20 20 20 28 65 6e 64 20 28 69 66 20 28 75 73 65 2d 72 65 67 69 6f 6e 2d 70 29 20 28 72 65 .....(end.(if.(use-region-p).(re
1ae00 67 69 6f 6e 2d 65 6e 64 29 20 28 70 6f 69 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 gion-end).(point))))...........(
1ae20 75 6e 6c 65 73 73 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 unless.output-to-other-buffer-p.
1ae40 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 74 6f 72 65 20 74 68 65 20 6b 69 6c 6c 65 64 20 ............;;.store.the.killed.
1ae60 74 65 78 74 20 69 6e 20 67 70 74 65 6c 2d 68 69 73 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 text.in.gptel-history...........
1ae80 20 20 28 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 ..(gptel--attach-response-histor
1aea0 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 62 75 66 66 65 72 2d 73 75 62 y..............(list.(buffer-sub
1aec0 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 29 29 29 string-no-properties.beg.end))))
1aee0 0a 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 ...........(kill-region.beg.end)
1af00 29 29 0a 0a 20 20 20 20 20 20 28 77 68 65 6e 20 6f 75 74 70 75 74 2d 74 6f 2d 6f 74 68 65 72 2d ))........(when.output-to-other-
1af20 62 75 66 66 65 72 2d 70 0a 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 28 63 6f 6e 63 61 buffer-p.........(message.(conca
1af40 74 20 22 50 72 6f 6d 70 74 20 73 65 6e 74 20 74 6f 20 62 75 66 66 65 72 3a 20 22 0a 20 20 20 20 t."Prompt.sent.to.buffer:.".....
1af60 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 65 72 74 69 7a 65 .....................(propertize
1af80 20 67 70 74 65 6c 2d 62 75 66 66 65 72 2d 6e 61 6d 65 20 27 66 61 63 65 20 27 68 65 6c 70 2d 6b .gptel-buffer-name.'face.'help-k
1afa0 65 79 2d 62 69 6e 64 69 6e 67 29 29 29 0a 20 20 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 ey-binding))).........(display-b
1afc0 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72 20 27 28 28 64 69 73 70 6c 61 79 uffer..........buffer.'((display
1afe0 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 20 20 -buffer-reuse-window............
1b000 20 20 20 20 20 20 20 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 ........display-buffer-pop-up-wi
1b020 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 75 73 61 62 6c ndow)...................(reusabl
1b040 65 2d 66 72 61 6d 65 73 20 2e 20 76 69 73 69 62 6c 65 29 29 29 29 29 29 29 0a 0a 3b 3b 20 41 6c e-frames...visible)))))))..;;.Al
1b060 6c 6f 77 20 63 61 6c 6c 69 6e 67 20 66 72 6f 6d 20 65 6c 69 73 70 0a 28 70 75 74 20 27 67 70 74 low.calling.from.elisp.(put.'gpt
1b080 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 20 27 69 6e 74 65 72 61 63 74 69 76 65 2d 6f 6e 6c el--suffix-send.'interactive-onl
1b0a0 79 20 6e 69 6c 29 0a 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 78 20 74 6f 20 72 65 67 65 6e 65 72 61 y.nil)..;;.**.Suffix.to.regenera
1b0c0 74 65 20 72 65 73 70 6f 6e 73 65 0a 0a 28 64 65 66 75 6e 20 67 70 74 65 6c 2d 2d 72 65 67 65 6e te.response..(defun.gptel--regen
1b0e0 65 72 61 74 65 20 28 29 0a 20 20 22 52 65 67 65 6e 65 72 61 74 65 20 67 70 74 65 6c 20 72 65 73 erate.()..."Regenerate.gptel.res
1b100 70 6f 6e 73 65 20 61 74 20 70 6f 69 6e 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 ponse.at.point."...(interactive)
1b120 0a 20 20 28 77 68 65 6e 20 28 67 70 74 65 6c 2d 2d 69 6e 2d 72 65 73 70 6f 6e 73 65 2d 70 29 0a ...(when.(gptel--in-response-p).
1b140 20 20 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)
1b160 20 28 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 .(gptel--get-bounds))...........
1b180 20 20 20 20 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 .......(history.(get-char-proper
1b1a0 74 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 0a 20 20 20 20 ty.(point).'gptel-history)).....
1b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 65 76 2d 72 65 73 70 6f 6e 73 65 73 20 28 63 6f .............(prev-responses.(co
1b1e0 6e 73 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 69 ns.(buffer-substring-no-properti
1b200 65 73 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 es.beg.end).....................
1b220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 69 73 74 6f 72 79 29 29 29 0a 20 20 ...................history)))...
1b240 20 20 20 20 28 77 68 65 6e 20 67 70 74 65 6c 2d 6d 6f 64 65 20 20 20 20 20 20 20 20 20 20 20 20 ....(when.gptel-mode............
1b260 20 20 20 20 20 20 3b 52 65 6d 6f 76 65 20 70 72 65 66 69 78 2f 73 75 66 66 69 78 0a 20 20 20 20 ......;Remove.prefix/suffix.....
1b280 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 28 67 ....(save-excursion...........(g
1b2a0 6f 74 6f 2d 63 68 61 72 20 62 65 67 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 6c oto-char.beg)...........(when.(l
1b2c0 6f 6f 6b 69 6e 67 2d 62 61 63 6b 20 28 63 6f 6e 63 61 74 20 22 5c 6e 2b 22 20 28 72 65 67 65 78 ooking-back.(concat."\n+".(regex
1b2e0 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 73 p-quote.(gptel-response-prefix-s
1b300 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 20 20 20 20 tring)))........................
1b320 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 27 67 72 65 65 64 79 29 0a 20 20 20 20 .......(point-min).'greedy).....
1b340 20 20 20 20 20 20 20 20 28 73 65 74 71 20 62 65 67 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 ........(setq.beg.(match-beginni
1b360 6e 67 20 30 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 65 6e 64 ng.0)))...........(goto-char.end
1b380 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 0a 20 20 )...........(when.(looking-at...
1b3a0 20 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 2b 22 20 28 72 65 ...............(concat."\n+".(re
1b3c0 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-
1b3e0 73 74 72 69 6e 67 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6e 64 string)))).............(setq.end
1b400 20 28 6d 61 74 63 68 2d 65 6e 64 20 30 29 29 29 29 29 0a 20 20 20 20 20 20 28 64 65 6c 65 74 65 .(match-end.0))))).......(delete
1b420 2d 72 65 67 69 6f 6e 20 62 65 67 20 65 6e 64 29 0a 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 61 -region.beg.end).......(gptel--a
1b440 74 74 61 63 68 2d 72 65 73 70 6f 6e 73 65 2d 68 69 73 74 6f 72 79 20 70 72 65 76 2d 72 65 73 70 ttach-response-history.prev-resp
1b460 6f 6e 73 65 73 29 0a 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 onses).......(call-interactively
1b480 20 23 27 67 70 74 65 6c 2d 2d 73 75 66 66 69 78 2d 73 65 6e 64 29 29 29 29 0a 0a 3b 3b 20 2a 2a .#'gptel--suffix-send))))..;;.**
1b4a0 20 53 65 74 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 0a 28 64 65 66 75 6e 20 67 70 74 65 6c .Set.system.message.(defun.gptel
1b4c0 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 20 28 29 0a 20 20 --read-crowdsourced-prompt.()...
1b4e0 22 50 69 63 6b 20 61 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 "Pick.a.crowdsourced.system.prom
1b500 70 74 20 66 6f 72 20 67 70 74 65 6c 2e 0a 0a 54 68 69 73 20 75 73 65 73 20 74 68 65 20 70 72 6f pt.for.gptel...This.uses.the.pro
1b520 6d 70 74 73 20 69 6e 20 74 68 65 20 76 61 72 69 61 62 6c 65 0a 60 67 70 74 65 6c 2d 2d 63 72 6f mpts.in.the.variable.`gptel--cro
1b540 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 27 2c 20 77 68 69 63 68 20 73 65 65 2e 22 0a wdsourced-prompts',.which.see.".
1b560 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 69 66 20 28 6e 6f 74 20 28 68 61 73 68 ..(interactive)...(if.(not.(hash
1b580 2d 74 61 62 6c 65 2d 65 6d 70 74 79 2d 70 20 28 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 -table-empty-p.(gptel--crowdsour
1b5a0 63 65 64 2d 70 72 6f 6d 70 74 73 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 68 6f 69 ced-prompts))).......(let.((choi
1b5c0 63 65 0a 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 72 65 61 64 ce..............(completing-read
1b5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 69 63 6b 20 61 6e 64 20 65 64 69 74 20 70 72 ..............."Pick.and.edit.pr
1b600 6f 6d 70 74 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 73 ompt:."...............(lambda.(s
1b620 74 72 20 70 72 65 64 20 61 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tr.pred.action).................
1b640 28 69 66 20 28 65 71 20 61 63 74 69 6f 6e 20 27 6d 65 74 61 64 61 74 61 29 0a 20 20 20 20 20 20 (if.(eq.action.'metadata).......
1b660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 6d 65 74 61 64 61 74 61 0a 20 20 20 20 20 20 20 ..............`(metadata........
1b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 66 66 69 78 61 74 69 6f 6e 2d 66 75 6e 63 74 ...............(affixation-funct
1b6a0 69 6f 6e 20 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 28 6c 61 ion..........................(la
1b6c0 6d 62 64 61 20 28 63 61 6e 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mbda.(cands)....................
1b6e0 20 20 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......(mapcar...................
1b700 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ........(lambda.(c).............
1b720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 63 20 22 22 0a 20 20 20 20 20 ................(list.c.""......
1b740 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 63 61 74 20 ........................(concat.
1b760 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 73 70 61 63 65 (propertize.".".'display.'(space
1b780 20 3a 61 6c 69 67 6e 2d 74 6f 20 32 32 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .:align-to.22)).................
1b7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 22 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 67 ..............".".(propertize.(g
1b7c0 65 74 68 61 73 68 20 63 20 67 70 74 65 6c 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f ethash.c.gptel--crowdsourced-pro
1b7e0 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 20 20 20 20 20 mpts)...........................
1b800 20 20 20 20 20 27 66 61 63 65 20 27 63 6f 6d 70 6c 65 74 69 6f 6e 73 2d 61 6e 6e 6f 74 61 74 69 .....'face.'completions-annotati
1b820 6f 6e 73 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 ons)))).........................
1b840 20 20 63 61 6e 64 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 ..cands))))...................(c
1b860 6f 6d 70 6c 65 74 65 2d 77 69 74 68 2d 61 63 74 69 6f 6e 20 61 63 74 69 6f 6e 20 67 70 74 65 6c omplete-with-action.action.gptel
1b880 2d 2d 63 72 6f 77 64 73 6f 75 72 63 65 64 2d 70 72 6f 6d 70 74 73 20 73 74 72 20 70 72 65 64 29 --crowdsourced-prompts.str.pred)
1b8a0 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 20 74 29 29 29 0a 20 20 20 20 20 20 ))...............nil.t))).......
1b8c0 20 20 28 77 68 65 6e 2d 6c 65 74 20 28 28 70 72 6f 6d 70 74 20 28 67 65 74 68 61 73 68 20 63 68 ..(when-let.((prompt.(gethash.ch
1b8e0 6f 69 63 65 20 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 oice.gptel--crowdsourced-prompts
1b900 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 67 70 74 65 6c 2d 2d 73 79 73 ))).............(setq.gptel--sys
1b920 74 65 6d 2d 6d 65 73 73 61 67 65 20 70 72 6f 6d 70 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 tem-message.prompt).............
1b940 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 75 66 (call-interactively.#'gptel--suf
1b960 66 69 78 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 29 29 29 0a 20 20 20 20 28 6d 65 73 73 61 fix-system-message))).....(messa
1b980 67 65 20 22 4e 6f 20 70 72 6f 6d 70 74 73 20 61 76 61 69 6c 61 62 6c 65 2e 22 29 29 29 0a 0a 28 ge."No.prompts.available.")))..(
1b9a0 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 73 transient-define-suffix.gptel--s
1b9c0 75 66 66 69 78 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 20 28 29 0a 20 20 22 45 64 69 74 20 uffix-system-message.()..."Edit.
1b9e0 4c 4c 4d 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 2e 0a 0a 57 68 65 6e 20 4c 4f 43 41 4c 20 LLM.system.message...When.LOCAL.
1ba00 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 73 65 74 20 74 68 65 20 73 79 73 74 65 6d 20 6d 65 73 73 61 is.non-nil,.set.the.system.messa
1ba20 67 65 20 6f 6e 6c 79 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 62 75 66 66 65 72 2e 22 0a ge.only.in.the.current.buffer.".
1ba40 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
1ba60 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 22 53 65 74 20 6f 72 20 65 64 69 74 20 73 79 73 ...:description."Set.or.edit.sys
1ba80 74 65 6d 20 6d 65 73 73 61 67 65 22 0a 20 20 3a 66 6f 72 6d 61 74 20 22 20 25 6b 20 20 20 25 64 tem.message"...:format.".%k...%d
1baa0 22 0a 20 20 3a 6b 65 79 20 22 73 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 "...:key."s"...(interactive)...(
1bac0 6c 65 74 20 28 28 6f 72 69 67 2d 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 let.((orig-buf.(current-buffer))
1bae0 0a 20 20 20 20 20 20 20 20 28 6d 73 67 2d 73 74 61 72 74 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 .........(msg-start.(make-marker
1bb00 29 29 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 67 65 ))).....(with-current-buffer.(ge
1bb20 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 67 70 74 65 6c 2d 73 79 73 74 65 6d 2a 22 t-buffer-create."*gptel-system*"
1bb40 29 0a 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 79 ).......(let.((inhibit-read-only
1bb60 20 74 29 29 0a 20 20 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 .t)).........(erase-buffer).....
1bb80 20 20 20 20 28 74 65 78 74 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 65 ....(text-mode).........(setq.he
1bba0 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 20 28 ader-line-format...............(
1bbc0 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 45 64 69 74 20 79 6f 75 72 concat................"Edit.your
1bbe0 20 73 79 73 74 65 6d 20 6d 65 73 73 61 67 65 20 62 65 6c 6f 77 20 61 6e 64 20 70 72 65 73 73 20 .system.message.below.and.press.
1bc00 22 0a 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 43 2d "................(propertize."C-
1bc20 63 20 43 2d 63 22 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 0a c.C-c".'face.'help-key-binding).
1bc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 77 68 65 6e 20 72 65 61 64 79 2c 20 6f 72 20 ...............".when.ready,.or.
1bc60 22 0a 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 43 2d "................(propertize."C-
1bc80 63 20 43 2d 6b 22 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 0a c.C-k".'face.'help-key-binding).
1bca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 74 6f 20 61 62 6f 72 74 2e 22 29 29 0a 20 20 ...............".to.abort."))...
1bcc0 20 20 20 20 20 20 28 69 6e 73 65 72 74 0a 20 20 20 20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c ......(insert.........."#.Exampl
1bce0 65 3a 20 59 6f 75 20 61 72 65 20 61 20 68 65 6c 70 66 75 6c 20 61 73 73 69 73 74 61 6e 74 2e 20 e:.You.are.a.helpful.assistant..
1bd00 41 6e 73 77 65 72 20 61 73 20 63 6f 6e 63 69 73 65 6c 79 20 61 73 20 70 6f 73 73 69 62 6c 65 2e Answer.as.concisely.as.possible.
1bd20 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c 65 3a 20 52 65 70 6c 79 20 6f \n".........."#.Example:.Reply.o
1bd40 6e 6c 79 20 77 69 74 68 20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 73 20 61 6e 64 20 6e 6f 20 70 nly.with.shell.commands.and.no.p
1bd60 72 6f 73 65 2e 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 22 23 20 45 78 61 6d 70 6c 65 3a 20 59 6f rose.\n".........."#.Example:.Yo
1bd80 75 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 u.are.a.poet..Reply.only.in.vers
1bda0 65 2e 5c 6e 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 28 61 64 64 2d 74 65 78 74 2d 70 72 6f 70 65 e.\n\n").........(add-text-prope
1bdc0 72 74 69 65 73 0a 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 31 2d 20 28 rties..........(point-min).(1-.(
1bde0 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 72 65 61 64 2d 6f 6e 6c point))..........(list.'read-onl
1be00 79 20 74 20 27 66 61 63 65 20 27 66 6f 6e 74 2d 6c 6f 63 6b 2d 63 6f 6d 6d 65 6e 74 2d 66 61 63 y.t.'face.'font-lock-comment-fac
1be20 65 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f 3a 20 6d 61 6b 65 2d 73 65 70 61 72 61 e)).........;;.TODO:.make-separa
1be40 74 6f 72 2d 6c 69 6e 65 20 72 65 71 75 69 72 65 73 20 45 6d 61 63 73 20 32 38 2e 31 2b 2e 0a 20 tor-line.requires.Emacs.28.1+...
1be60 20 20 20 20 20 20 20 3b 3b 20 28 69 6e 73 65 72 74 20 28 70 72 6f 70 65 72 74 69 7a 65 20 28 6d .......;;.(insert.(propertize.(m
1be80 61 6b 65 2d 73 65 70 61 72 61 74 6f 72 2d 6c 69 6e 65 29 20 27 72 65 61 72 2d 6e 6f 6e 73 74 69 ake-separator-line).'rear-nonsti
1bea0 63 6b 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 6d 73 67 2d cky.t)).........(set-marker.msg-
1bec0 73 74 61 72 74 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 start.(point)).........(save-exc
1bee0 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 28 62 75 66 66 65 72 ursion...........(insert.(buffer
1bf00 2d 6c 6f 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 -local-value.'gptel--system-mess
1bf20 61 67 65 20 6f 72 69 67 2d 62 75 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 75 73 68 2d 6d age.orig-buf))...........(push-m
1bf40 61 72 6b 20 6e 69 6c 20 27 6e 6f 6d 73 67 29 29 0a 20 20 20 20 20 20 20 20 28 61 63 74 69 76 61 ark.nil.'nomsg)).........(activa
1bf60 74 65 2d 6d 61 72 6b 29 29 0a 20 20 20 20 20 20 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 20 te-mark)).......(display-buffer.
1bf80 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (current-buffer)................
1bfa0 20 20 20 20 20 20 20 60 28 28 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 62 65 6c 6f 77 2d 73 .......`((display-buffer-below-s
1bfc0 65 6c 65 63 74 65 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 elected)........................
1bfe0 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e 20 2c 23 27 73 65 6c 65 63 74 2d 77 69 6e 64 .(body-function...,#'select-wind
1c000 6f 77 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 77 69 6e ow).........................(win
1c020 64 6f 77 2d 68 65 69 67 68 74 20 2e 20 2c 23 27 66 69 74 2d 77 69 6e 64 6f 77 2d 74 6f 2d 62 75 dow-height...,#'fit-window-to-bu
1c040 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 71 75 69 74 2d 74 6f 2d 6d 65 6e ffer))).......(let.((quit-to-men
1c060 75 0a 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 u..............(lambda.().......
1c080 20 20 20 20 20 20 20 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 20 20 20 20 20 20 20 .........(interactive)..........
1c0a0 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 64 20 22 43 2d 63 ......(local-unset-key.(kbd."C-c
1c0c0 20 43 2d 63 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 63 61 6c 2d 75 6e .C-c"))................(local-un
1c0e0 73 65 74 2d 6b 65 79 20 28 6b 62 64 20 22 43 2d 63 20 43 2d 6b 22 29 29 0a 20 20 20 20 20 20 20 set-key.(kbd."C-c.C-k"))........
1c100 20 20 20 20 20 20 20 20 28 71 75 69 74 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 ........(quit-window)...........
1c120 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 20 20 20 20 .....(display-buffer............
1c140 20 20 20 20 20 6f 72 69 67 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 .....orig-buf.................`(
1c160 28 64 69 73 70 6c 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 (display-buffer-reuse-window....
1c180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 2d 62 75 66 66 65 72 2d 75 ................display-buffer-u
1c1a0 73 65 2d 73 6f 6d 65 2d 77 69 6e 64 6f 77 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 se-some-window).................
1c1c0 20 20 28 62 6f 64 79 2d 66 75 6e 63 74 69 6f 6e 20 2e 20 2c 23 27 73 65 6c 65 63 74 2d 77 69 6e ..(body-function...,#'select-win
1c1e0 64 6f 77 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 6c 6c 2d 69 6e 74 65 dow)))................(call-inte
1c200 72 61 63 74 69 76 65 6c 79 20 23 27 67 70 74 65 6c 2d 6d 65 6e 75 29 29 29 29 0a 20 20 20 20 20 ractively.#'gptel-menu))))......
1c220 20 20 20 28 6c 6f 63 61 6c 2d 73 65 74 2d 6b 65 79 20 28 6b 62 64 20 22 43 2d 63 20 43 2d 63 22 ...(local-set-key.(kbd."C-c.C-c"
1c240 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 6c 61 6d 62 64 61 )........................(lambda
1c260 20 28 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 69 6e .()..........................(in
1c280 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 20 20 20 20 20 20 teractive)......................
1c2a0 20 20 20 20 28 6c 65 74 20 28 28 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 ....(let.((system-message.......
1c2c0 20 20 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 62 75 66 66 65 ..........................(buffe
1c2e0 72 2d 73 75 62 73 74 72 69 6e 67 20 6d 73 67 2d 73 74 61 72 74 20 28 70 6f 69 6e 74 2d 6d 61 78 r-substring.msg-start.(point-max
1c300 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 20 20 20 ))))............................
1c320 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 6f 72 69 67 2d 62 75 66 0a 20 20 (with-current-buffer.orig-buf...
1c340 20 20 20 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
1c360 6c 2d 2d 73 65 74 2d 77 69 74 68 2d 73 63 6f 70 65 20 27 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d l--set-with-scope.'gptel--system
1c380 2d 6d 65 73 73 61 67 65 20 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 20 -message.system-message.........
1c3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
1c3c0 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
1c3e0 63 61 6c 6c 79 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 cally)))........................
1c400 20 20 28 66 75 6e 63 61 6c 6c 20 71 75 69 74 2d 74 6f 2d 6d 65 6e 75 29 29 29 0a 20 20 20 20 20 ..(funcall.quit-to-menu)))......
1c420 20 20 20 28 6c 6f 63 61 6c 2d 73 65 74 2d 6b 65 79 20 28 6b 62 64 20 22 43 2d 63 20 43 2d 6b 22 ...(local-set-key.(kbd."C-c.C-k"
1c440 29 20 71 75 69 74 2d 74 6f 2d 6d 65 6e 75 29 29 29 29 29 0a 0a 3b 3b 20 2a 2a 20 53 75 66 66 69 ).quit-to-menu)))))..;;.**.Suffi
1c460 78 65 73 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 0a 28 xes.for.rewriting/refactoring..(
1c480 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 73 transient-define-suffix.gptel--s
1c4a0 75 66 66 69 78 2d 72 65 77 72 69 74 65 20 28 29 0a 20 20 22 52 65 77 72 69 74 65 20 6f 72 20 72 uffix-rewrite.()..."Rewrite.or.r
1c4c0 65 66 61 63 74 6f 72 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 73 2e 22 0a 20 20 3a 6b 65 79 efactor.region.contents."...:key
1c4e0 20 22 72 22 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 23 27 67 70 74 65 6c 2d 2d 72 65 66 ."r"...:description.#'gptel--ref
1c500 61 63 74 6f 72 2d 6f 72 2d 72 65 77 72 69 74 65 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 actor-or-rewrite...(interactive)
1c520 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 6d 70 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 ...(let*.((prompt.(buffer-substr
1c540 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 20 20 20 ing-no-properties...............
1c560 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 6e 2d 65 ....(region-beginning).(region-e
1c580 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 nd)))..........(stream.gptel-str
1c5a0 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 eam)..........(gptel--system-mes
1c5c0 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 65 29 29 0a 20 20 sage.gptel--rewrite-message))...
1c5e0 20 20 28 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 70 72 6f 6d 70 74 20 3a 73 74 72 65 61 6d 20 ..(gptel-request.prompt.:stream.
1c600 73 74 72 65 61 6d 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 6e 74 2d 64 65 66 69 6e 65 2d 73 75 66 stream)))..(transient-define-suf
1c620 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 72 65 fix.gptel--suffix-rewrite-and-re
1c640 70 6c 61 63 65 20 28 29 0a 20 20 22 52 65 66 61 63 74 6f 72 20 72 65 67 69 6f 6e 20 63 6f 6e 74 place.()..."Refactor.region.cont
1c660 65 6e 74 73 20 61 6e 64 20 72 65 70 6c 61 63 65 20 69 74 2e 22 0a 20 20 3a 6b 65 79 20 22 52 22 ents.and.replace.it."...:key."R"
1c680 0a 20 20 3a 64 65 73 63 72 69 70 74 69 6f 6e 20 28 6c 61 6d 62 64 61 20 28 29 20 28 63 6f 6e 63 ...:description.(lambda.().(conc
1c6a0 61 74 20 28 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 29 20 at.(gptel--refactor-or-rewrite).
1c6c0 22 20 69 6e 20 70 6c 61 63 65 22 29 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 ".in.place"))...(interactive)...
1c6e0 28 6c 65 74 2a 20 28 28 70 72 6f 6d 70 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 (let*.((prompt.(buffer-substring
1c700 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 20 20 20 20 20 20 -no-properties..................
1c720 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)
1c740 29 29 0a 20 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 20 67 70 74 65 6c 2d 73 74 72 65 61 6d ))..........(stream.gptel-stream
1c760 29 0a 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 73 79 73 74 65 6d 2d 6d 65 73 73 61 67 )..........(gptel--system-messag
1c780 65 20 67 70 74 65 6c 2d 2d 72 65 77 72 69 74 65 2d 6d 65 73 73 61 67 65 29 29 0a 20 20 20 20 28 e.gptel--rewrite-message)).....(
1c7a0 6b 69 6c 6c 2d 72 65 67 69 6f 6e 20 28 72 65 67 69 6f 6e 2d 62 65 67 69 6e 6e 69 6e 67 29 20 28 kill-region.(region-beginning).(
1c7c0 72 65 67 69 6f 6e 2d 65 6e 64 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 4f 72 69 67 69 region-end)).....(message."Origi
1c7e0 6e 61 6c 20 74 65 78 74 20 73 61 76 65 64 20 74 6f 20 6b 69 6c 6c 2d 72 69 6e 67 2e 22 29 0a 20 nal.text.saved.to.kill-ring.")..
1c800 20 20 20 28 67 70 74 65 6c 2d 72 65 71 75 65 73 74 20 70 72 6f 6d 70 74 20 3a 73 74 72 65 61 6d ...(gptel-request.prompt.:stream
1c820 20 73 74 72 65 61 6d 20 3a 69 6e 2d 70 6c 61 63 65 20 74 29 29 29 0a 0a 28 74 72 61 6e 73 69 65 .stream.:in-place.t)))..(transie
1c840 6e 74 2d 64 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 nt-define-suffix.gptel--suffix-r
1c860 65 77 72 69 74 65 2d 61 6e 64 2d 65 64 69 66 66 20 28 61 72 67 73 29 0a 20 20 22 52 65 66 61 63 ewrite-and-ediff.(args)..."Refac
1c880 74 6f 72 69 6e 67 20 6f 72 20 72 65 77 72 69 74 65 20 72 65 67 69 6f 6e 20 63 6f 6e 74 65 6e 74 toring.or.rewrite.region.content
1c8a0 73 20 61 6e 64 20 72 75 6e 20 45 64 69 66 66 2e 22 0a 20 20 3a 6b 65 79 20 22 45 22 0a 20 20 3a s.and.run.Ediff."...:key."E"...:
1c8c0 64 65 73 63 72 69 70 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 description.(lambda.().(concat.(
1c8e0 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 29 20 22 20 61 6e gptel--refactor-or-rewrite).".an
1c900 64 20 45 64 69 66 66 22 29 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 28 6c 69 73 74 20 d.Ediff"))...(interactive.(list.
1c920 28 74 72 61 6e 73 69 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 (transient-args.transient-curren
1c940 74 2d 63 6f 6d 6d 61 6e 64 29 29 29 0a 20 20 28 6c 65 74 72 65 63 20 28 28 70 72 6f 6d 70 74 20 t-command)))...(letrec.((prompt.
1c960 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 0a (buffer-substring-no-properties.
1c980 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 67 69 6e 6e ..................(region-beginn
1c9a0 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 20 20 20 28 ing).(region-end)))............(
1c9c0 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 77 gptel--system-message.gptel--rew
1c9e0 72 69 74 65 2d 6d 65 73 73 61 67 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 4f 44 4f rite-message)............;;.TODO
1ca00 3a 20 54 65 63 68 6e 69 63 61 6c 6c 79 20 77 65 20 73 68 6f 75 6c 64 20 73 61 76 65 20 74 68 65 :.Technically.we.should.save.the
1ca20 20 77 69 6e 64 6f 77 20 63 6f 6e 66 69 67 20 61 74 20 74 68 65 20 74 69 6d 65 0a 20 20 20 20 20 .window.config.at.the.time......
1ca40 20 20 20 20 20 20 3b 3b 20 60 65 64 69 66 66 2d 73 65 74 75 70 2d 68 6f 6f 6b 27 20 72 75 6e 73 ......;;.`ediff-setup-hook'.runs
1ca60 2c 20 62 75 74 20 74 68 69 73 20 77 69 6c 6c 20 64 6f 20 66 6f 72 20 6e 6f 77 2e 0a 20 20 20 20 ,.but.this.will.do.for.now......
1ca80 20 20 20 20 20 20 20 28 63 77 63 20 28 63 75 72 72 65 6e 74 2d 77 69 6e 64 6f 77 2d 63 6f 6e 66 .......(cwc.(current-window-conf
1caa0 69 67 75 72 61 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 70 74 65 6c 2d 2d 65 iguration))............(gptel--e
1cac0 64 69 66 66 2d 72 65 73 74 6f 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 diff-restore.............(lambda
1cae0 20 28 29 0a 20 20 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 .()...............(when.(window-
1cb00 63 6f 6e 66 69 67 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 configuration-p.cwc)............
1cb20 20 20 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 .....(set-window-configuration.c
1cb40 77 63 29 29 0a 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 wc))...............(remove-hook.
1cb60 27 65 64 69 66 66 2d 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 'ediff-quit-hook.gptel--ediff-re
1cb80 73 74 6f 72 65 29 29 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 57 61 69 74 69 6e 67 20 store)))).....(message."Waiting.
1cba0 66 6f 72 20 72 65 73 70 6f 6e 73 65 2e 2e 2e 20 22 29 0a 20 20 20 20 28 67 70 74 65 6c 2d 72 65 for.response....").....(gptel-re
1cbc0 71 75 65 73 74 0a 20 20 20 20 20 70 72 6f 6d 70 74 0a 20 20 20 20 20 3a 63 6f 6e 74 65 78 74 20 quest......prompt......:context.
1cbe0 28 63 6f 6e 73 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 (cons.(region-beginning).(region
1cc00 2d 65 6e 64 29 29 0a 20 20 20 20 20 3a 63 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 28 6c 61 6d 62 -end))......:callback......(lamb
1cc20 64 61 20 28 72 65 73 70 6f 6e 73 65 20 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 28 69 66 20 28 6e da.(response.info)........(if.(n
1cc40 6f 74 20 72 65 73 70 6f 6e 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 ot.response)............(message
1cc60 20 22 43 68 61 74 47 50 54 20 72 65 73 70 6f 6e 73 65 20 65 72 72 6f 72 3a 20 25 73 22 20 28 70 ."ChatGPT.response.error:.%s".(p
1cc80 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 20 20 20 list-get.info.:status)).........
1cca0 20 28 6c 65 74 2a 20 28 28 67 70 74 65 6c 2d 62 75 66 66 65 72 20 28 70 6c 69 73 74 2d 67 65 74 .(let*.((gptel-buffer.(plist-get
1ccc0 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 20 20 20 20 20 20 .info.:buffer)).................
1cce0 28 67 70 74 65 6c 2d 62 6f 75 6e 64 73 20 28 70 6c 69 73 74 2d 67 65 74 20 69 6e 66 6f 20 3a 63 (gptel-bounds.(plist-get.info.:c
1cd00 6f 6e 74 65 78 74 29 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 ontext)).................(buffer
1cd20 2d 6d 6f 64 65 0a 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 -mode..................(buffer-l
1cd40 6f 63 61 6c 2d 76 61 6c 75 65 20 27 6d 61 6a 6f 72 2d 6d 6f 64 65 20 67 70 74 65 6c 2d 62 75 66 ocal-value.'major-mode.gptel-buf
1cd60 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 63 61 73 65 2d 6c 65 74 20 28 28 60 fer)))............(pcase-let.((`
1cd80 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 20 20 20 (,new-buf.,new-beg.,new-end)....
1cda0 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
1cdc0 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 20 22 2a 67 nt-buffer.(get-buffer-create."*g
1cde0 70 74 65 6c 2d 72 65 77 72 69 74 65 2d 52 65 67 69 6f 6e 2e 42 2d 2a 22 29 0a 20 20 20 20 20 20 ptel-rewrite-Region.B-*").......
1ce00 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 69 6e 68 69 62 ....................(let.((inhib
1ce20 69 74 2d 72 65 61 64 2d 6f 6e 6c 79 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 it-read-only.t))................
1ce40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 .............(erase-buffer).....
1ce60 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 6c ........................(funcall
1ce80 20 62 75 66 66 65 72 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 .buffer-mode)...................
1cea0 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 20 ..........(insert.response).....
1cec0 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 6f 74 6f 2d 63 68 ........................(goto-ch
1cee0 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 20 20 20 20 20 20 ar.(point-min)).................
1cf00 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 ............(list.(current-buffe
1cf20 72 29 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 29 0a r).(point-min).(point-max)))))).
1cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 65 64 69 66 66 29 0a 20 20 .............(require.'ediff)...
1cf60 20 20 20 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
1cf80 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).....
1cfa0 20 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 27 .........(apply...............#'
1cfc0 65 64 69 66 66 2d 72 65 67 69 6f 6e 73 2d 69 6e 74 65 72 6e 61 6c 0a 20 20 20 20 20 20 20 20 20 ediff-regions-internal..........
1cfe0 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 20 28 65 64 69 66 66 2d 6d 61 6b 65 2d 63 6c 6f .....(get-buffer.(ediff-make-clo
1d000 6e 65 64 2d 62 75 66 66 65 72 20 67 70 74 65 6c 2d 62 75 66 66 65 72 20 22 2d 52 65 67 69 6f 6e ned-buffer.gptel-buffer."-Region
1d020 2e 41 2d 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 67 70 74 65 6c 2d .A-"))...............(car.gptel-
1d040 62 6f 75 6e 64 73 29 20 28 63 64 72 20 67 70 74 65 6c 2d 62 6f 75 6e 64 73 29 0a 20 20 20 20 20 bounds).(cdr.gptel-bounds)......
1d060 20 20 20 20 20 20 20 20 20 6e 65 77 2d 62 75 66 20 6e 65 77 2d 62 65 67 20 6e 65 77 2d 65 6e 64 .........new-buf.new-beg.new-end
1d080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ...............nil..............
1d0a0 20 28 69 66 20 28 74 72 61 6e 73 69 65 6e 74 2d 61 72 67 2d 76 61 6c 75 65 20 22 2d 77 22 20 61 .(if.(transient-arg-value."-w".a
1d0c0 72 67 73 29 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 27 65 64 rgs)...................(list.'ed
1d0e0 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 69 73 65 20 iff-regions-wordwise.'word-wise.
1d100 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 65 64 69 66 nil).................(list.'edif
1d120 66 2d 72 65 67 69 6f 6e 73 2d 6c 69 6e 65 77 69 73 65 20 6e 69 6c 20 6e 69 6c 29 29 29 29 29 29 f-regions-linewise.nil.nil))))))
1d140 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 29 ))))..(provide.'gptel-transient)
1d160 0a 3b 3b 3b 20 67 70 74 65 6c 2d 74 72 61 6e 73 69 65 6e 74 2e 65 6c 20 65 6e 64 73 20 68 65 72 .;;;.gptel-transient.el.ends.her
1d180 65 0a 0a 3b 3b 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 3b 3b 20 6f 75 74 6c 69 6e e..;;.Local.Variables:.;;.outlin
1d1a0 65 2d 72 65 67 65 78 70 3a 20 22 5e 3b 3b 20 5c 5c 2a 2b 22 0a 3b 3b 20 65 76 61 6c 3a 20 28 6f e-regexp:."^;;.\\*+".;;.eval:.(o
1d1c0 75 74 6c 69 6e 65 2d 6d 69 6e 6f 72 2d 6d 6f 64 65 20 31 29 0a 3b 3b 20 45 6e 64 3a 0a 00 00 00 utline-minor-mode.1).;;.End:....
1d1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d200 67 70 74 65 6c 2d 32 30 32 34 30 34 30 34 2e 38 31 33 2f 67 70 74 65 6c 2e 65 6c 00 00 00 00 00 gptel-20240404.813/gptel.el.....
1d220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d260 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
1d280 30 31 34 36 34 35 32 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 33 35 31 30 00 20 30 00 00 00 0146452.00000000000.013510..0...
1d2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d300 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...................
1d320 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...................
1d340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1d400 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
1d420 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
1d440 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
1d460 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
1d480 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
1d4a0 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
1d4c0 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
1d4e0 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"))
1d500 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
1d520 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
1d540 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:
1d560 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
1d580 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
1d5a0 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
1d5c0 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
1d5e0 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.
1d600 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
1d620 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
1d640 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.
1d660 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.
1d680 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.
1d6a0 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
1d6c0 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
1d6e0 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
1d700 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
1d720 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
1d740 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
1d760 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
1d780 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
1d7a0 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
1d7c0 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
1d7e0 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
1d800 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...;
1d820 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
1d840 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
1d860 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
1d880 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
1d8a0 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
1d8c0 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
1d8e0 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
1d900 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
1d920 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.
1d940 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
1d960 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
1d980 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).
1d9a0 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
1d9c0 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
1d9e0 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
1da00 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
1da20 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
1da40 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
1da60 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
1da80 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.
1daa0 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
1dac0 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
1dae0 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
1db00 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
1db20 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
1db40 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
1db60 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.;;...
1db80 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
1dba0 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.
1dbc0 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,
1dbe0 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:.;;.;;.-.
1dc00 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.
1dc20 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
1dc40 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
1dc60 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
1dc80 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
1dca0 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).;;.;;
1dcc0 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
1dce0 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
1dd00 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
1dd20 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
1dd40 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
1dd60 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
1dd80 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
1dda0 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
1ddc0 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
1dde0 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..;
1de00 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
1de20 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:.;;.;;.
1de40 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
1de60 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
1de80 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
1dea0 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
1dec0 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
1dee0 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
1df00 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.
1df20 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..;;
1df40 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
1df60 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
1df80 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
1dfa0 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
1dfc0 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.;;
1dfe0 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
1e000 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
1e020 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
1e040 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
1e060 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
1e080 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
1e0a0 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
1e0c0 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
1e0e0 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.;;...
1e100 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..;;.;;
1e120 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
1e140 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
1e160 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
1e180 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
1e1a0 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
1e1c0 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
1e1e0 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:.
1e200 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-
1e220 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
1e240 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
1e260 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
1e280 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')
1e2a0 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
1e2c0 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')
1e2e0 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
1e300 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
1e320 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
1e340 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
1e360 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
1e380 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.
1e3a0 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
1e3c0 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
1e3e0 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
1e400 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
1e420 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
1e440 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
1e460 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
1e480 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
1e4a0 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
1e4c0 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
1e4e0 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
1e500 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
1e520 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
1e540 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
1e560 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
1e580 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
1e5a0 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-
1e5c0 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
1e5e0 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
1e600 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
1e620 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
1e640 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
1e660 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
1e680 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
1e6a0 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-
1e6c0 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
1e6e0 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
1e700 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
1e720 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
1e740 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
1e760 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
1e780 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
1e7a0 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
1e7c0 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
1e7e0 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
1e800 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)
1e820 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
1e840 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
1e860 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
1e880 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
1e8a0 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
1e8c0 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))....;;.
1e8e0 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
1e900 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
1e920 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
1e940 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
1e960 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.
1e980 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
1e9a0 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).(
1e9c0 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
1e9e0 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
1ea00 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
1ea20 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.
1ea40 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
1ea60 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
1ea80 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
1eaa0 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.
1eac0 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...
1eae0 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
1eb00 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
1eb20 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)
1eb40 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
1eb60 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
1eb80 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
1eba0 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).
1ebc0 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
1ebe0 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.......
1ec00 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").....
1ec20 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
1ec40 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
1ec60 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
1ec80 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.
1eca0 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
1ecc0 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
1ece0 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
1ed00 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')..
1ed20 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
1ed40 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
1ed60 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
1ed80 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."
1eda0 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
1edc0 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
1ede0 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"
1ee00 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
1ee20 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)...
1ee40 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
1ee60 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
1ee80 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
1eea0 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.
1eec0 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
1eee0 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
1ef00 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.
1ef20 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.
1ef40 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...
1ef60 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
1ef80 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
1efa0 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
1efc0 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.
1efe0 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
1f000 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
1f020 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
1f040 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.
1f060 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
1f080 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
1f0a0 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
1f0c0 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
1f0e0 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.
1f100 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
1f120 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
1f140 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
1f160 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
1f180 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
1f1a0 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
1f1c0 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
1f1e0 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..
1f200 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
1f220 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...'
1f240 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
1f260 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
1f280 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
1f2a0 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
1f2c0 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
1f2e0 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
1f300 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.
1f320 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
1f340 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
1f360 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.
1f380 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.
1f3a0 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
1f3c0 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
1f3e0 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.
1f400 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
1f420 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.
1f440 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'.
1f460 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)
1f480 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-
1f4a0 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
1f4c0 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.
1f4e0 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
1f500 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
1f520 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
1f540 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
1f560 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
1f580 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
1f5a0 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
1f5c0 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
1f5e0 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
1f600 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.
1f620 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
1f640 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
1f660 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
1f680 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
1f6a0 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
1f6c0 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
1f6e0 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
1f700 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
1f720 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.
1f740 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
1f760 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
1f780 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.
1f7a0 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
1f7c0 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
1f7e0 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
1f800 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
1f820 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
1f840 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
1f860 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
1f880 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.
1f8a0 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
1f8c0 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.
1f8e0 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
1f900 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
1f920 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
1f940 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.
1f960 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.
1f980 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
1f9a0 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.
1f9c0 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
1f9e0 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
1fa00 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
1fa20 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
1fa40 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
1fa60 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
1fa80 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
1faa0 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)...........
1fac0 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
1fae0 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.............................
1fb00 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
1fb20 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
1fb40 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
1fb60 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
1fb80 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
1fba0 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)..;;
1fbc0 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.
1fbe0 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
1fc00 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
1fc20 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..."###.")..
1fc40 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
1fc60 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.
1fc80 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
1fca0 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
1fcc0 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
1fce0 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
1fd00 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
1fd20 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
1fd40 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
1fd60 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
1fd80 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
1fda0 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
1fdc0 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)
1fde0 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
1fe00 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..."
1fe20 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
1fe40 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.
1fe60 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
1fe80 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
1fea0 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
1fec0 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
1fee0 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
1ff00 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
1ff20 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
1ff40 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
1ff60 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
1ff80 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)
1ffa0 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
1ffc0 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
1ffe0 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.
20000 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
20020 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
20040 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
20060 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
20080 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
200a0 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
200c0 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
200e0 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..
20100 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
20120 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
20140 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-
20160 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
20180 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
201a0 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.
201c0 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
201e0 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
20200 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
20220 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
20240 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
20260 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
20280 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.....
202a0 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
202c0 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)...........(
202e0 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.
20300 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
20320 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
20340 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".......
20360 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
20380 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)).......
203a0 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-
203c0 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
203e0 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
20400 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")......................
20420 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")......
20440 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
20460 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.
20480 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"
204a0 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
204c0 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..
204e0 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
20500 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
20520 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
20540 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.
20560 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
20580 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
205a0 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
205c0 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
205e0 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
20600 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
20620 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
20640 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
20660 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
20680 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
206a0 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
206c0 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,
206e0 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.
20700 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
20720 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
20740 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
20760 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.
20780 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.
207a0 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.
207c0 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
207e0 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
20800 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
20820 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
20840 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
20860 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
20880 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.
208a0 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.
208c0 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
208e0 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.#'
20900 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
20920 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
20940 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
20960 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
20980 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.
209a0 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
209c0 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
209e0 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
20a00 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.
20a20 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.
20a40 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.
20a60 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.
20a80 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.
20aa0 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
20ac0 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
20ae0 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
20b00 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.#'
20b20 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.'
20b40 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
20b60 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
20b80 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
20ba0 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
20bc0 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
20be0 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
20c00 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
20c20 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
20c40 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.-.\"
20c60 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
20c80 6f 2d 31 36 6b 5c 22 0a 2d 20 5c 22 67 70 74 2d 34 5c 22 20 28 65 78 70 65 72 69 6d 65 6e 74 61 o-16k\".-.\"gpt-4\".(experimenta
20ca0 6c 29 0a 2d 20 5c 22 67 70 74 2d 34 2d 31 31 30 36 2d 70 72 65 76 69 65 77 5c 22 20 28 65 78 70 l).-.\"gpt-4-1106-preview\".(exp
20cc0 65 72 69 6d 65 6e 74 61 6c 29 0a 20 0a 54 6f 20 73 65 74 20 74 68 65 20 6d 6f 64 65 6c 20 66 6f erimental)...To.set.the.model.fo
20ce0 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 69 76 65 6c 79 20 63 r.a.chat.session.interactively.c
20d00 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 72 65 66 69 78 20 61 all.`gptel-send'.with.a.prefix.a
20d20 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 73 0a 20 20 3a 67 72 rgument."...:safe.#'always...:gr
20d40 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.....
20d60 20 20 20 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 ......(string.:tag."Specify.mode
20d80 6c 20 6e 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 l.name")...........(const.:tag."
20da0 47 50 54 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 GPT.3.5.turbo"."gpt-3.5-turbo").
20dc0 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 33 2e 35 20 74 ..........(const.:tag."GPT.3.5.t
20de0 75 72 62 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 urbo.16k"."gpt-3.5-turbo-16k")..
20e00 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 22 20 22 67 70 .........(const.:tag."GPT.4"."gp
20e20 74 2d 34 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 t-4")...........(const.:tag."GPT
20e40 20 34 20 74 75 72 62 6f 20 28 70 72 65 76 69 65 77 29 22 20 22 67 70 74 2d 34 2d 74 75 72 62 6f .4.turbo.(preview)"."gpt-4-turbo
20e60 2d 70 72 65 76 69 65 77 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 -preview")...........(const.:tag
20e80 20 22 47 50 54 20 34 20 33 32 6b 22 20 22 67 70 74 2d 34 2d 33 32 6b 22 29 0a 20 20 20 20 20 20 ."GPT.4.32k"."gpt-4-32k").......
20ea0 20 20 20 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 47 50 54 20 34 20 31 31 30 36 20 28 70 72 65 ....(const.:tag."GPT.4.1106.(pre
20ec0 76 69 65 77 29 22 20 22 67 70 74 2d 34 2d 31 31 30 36 2d 70 72 65 76 69 65 77 22 29 29 29 0a 0a view)"."gpt-4-1106-preview")))..
20ee0 28 64 65 66 63 75 73 74 6f 6d 20 67 70 74 65 6c 2d 74 65 6d 70 65 72 61 74 75 72 65 20 31 2e 30 (defcustom.gptel-temperature.1.0
20f00 0a 20 20 22 5c 22 54 65 6d 70 65 72 61 74 75 72 65 5c 22 20 6f 66 20 74 68 65 20 4c 4c 4d 20 72 ..."\"Temperature\".of.the.LLM.r
20f20 65 73 70 6f 6e 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 6e 75 6d 62 65 72 20 62 65 74 77 65 esponse...This.is.a.number.betwe
20f40 65 6e 20 30 2e 30 20 61 6e 64 20 32 2e 30 20 74 68 61 74 20 63 6f 6e 74 72 6f 6c 73 20 74 68 65 en.0.0.and.2.0.that.controls.the
20f60 20 72 61 6e 64 6f 6d 6e 65 73 73 0a 6f 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2c 20 77 69 74 .randomness.of.the.response,.wit
20f80 68 20 32 2e 30 20 62 65 69 6e 67 20 74 68 65 20 6d 6f 73 74 20 72 61 6e 64 6f 6d 2e 0a 0a 54 6f h.2.0.being.the.most.random...To
20fa0 20 73 65 74 20 74 68 65 20 74 65 6d 70 65 72 61 74 75 72 65 20 66 6f 72 20 61 20 63 68 61 74 20 .set.the.temperature.for.a.chat.
20fc0 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 0a 60 67 70 74 65 session.interactively.call.`gpte
20fe0 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 65 6e 74 2e 22 l-send'.with.a.prefix.argument."
21000 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 20 27 67 70 74 65 ...:safe.#'always...:group.'gpte
21020 6c 0a 20 20 3a 74 79 70 65 20 27 6e 75 6d 62 65 72 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 l...:type.'number)..(defvar.gpte
21040 6c 2d 2d 6b 6e 6f 77 6e 2d 62 61 63 6b 65 6e 64 73 20 6e 69 6c 0a 20 20 22 41 6c 69 73 74 20 6f l--known-backends.nil..."Alist.o
21060 66 20 4c 4c 4d 20 62 61 63 6b 65 6e 64 73 20 6b 6e 6f 77 6e 20 74 6f 20 67 70 74 65 6c 2e 0a 0a f.LLM.backends.known.to.gptel...
21080 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6d 61 70 70 69 6e 67 20 75 73 65 72 2d 70 72 This.is.an.alist.mapping.user-pr
210a0 6f 76 69 64 65 64 20 6e 61 6d 65 73 20 74 6f 20 62 61 63 6b 65 6e 64 20 73 74 72 75 63 74 73 2c ovided.names.to.backend.structs,
210c0 0a 73 65 65 20 60 67 70 74 65 6c 2d 62 61 63 6b 65 6e 64 27 2e 0a 0a 59 6f 75 20 63 61 6e 20 68 .see.`gptel-backend'...You.can.h
210e0 61 76 65 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 62 61 63 6b 65 6e 64 20 70 6f 69 6e 74 69 ave.more.than.one.backend.pointi
21100 6e 67 20 74 6f 20 74 68 65 20 73 61 6d 65 20 72 65 73 6f 75 72 63 65 0a 77 69 74 68 20 64 69 66 ng.to.the.same.resource.with.dif
21120 66 65 72 69 6e 67 20 73 65 74 74 69 6e 67 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 67 70 74 65 fering.settings.")..(defvar.gpte
21140 6c 2d 2d 6f 70 65 6e 61 69 0a 20 20 28 67 70 74 65 6c 2d 6d 61 6b 65 2d 6f 70 65 6e 61 69 0a 20 l--openai...(gptel-make-openai..
21160 20 20 22 43 68 61 74 47 50 54 22 0a 20 20 20 3a 6b 65 79 20 27 67 70 74 65 6c 2d 61 70 69 2d 6b .."ChatGPT"....:key.'gptel-api-k
21180 65 79 0a 20 20 20 3a 73 74 72 65 61 6d 20 74 0a 20 20 20 3a 6d 6f 64 65 6c 73 20 27 28 22 67 70 ey....:stream.t....:models.'("gp
211a0 74 2d 33 2e 35 2d 74 75 72 62 6f 22 20 22 67 70 74 2d 33 2e 35 2d 74 75 72 62 6f 2d 31 36 6b 22 t-3.5-turbo"."gpt-3.5-turbo-16k"
211c0 20 22 67 70 74 2d 34 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 ."gpt-4".............."gpt-4-tur
211e0 62 6f 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 bo-preview"."gpt-4-32k"."gpt-4-1
21200 31 30 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 106-preview".............."gpt-4
21220 2d 30 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 -0125-preview")))..(defcustom.gp
21240 74 65 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 tel-backend.gptel--openai..."LLM
21260 20 62 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 .backend.to.use...This.is.the.de
21280 66 61 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 fault.\"backend\",.an.object.of.
212a0 74 79 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 type.`gptel-backend'.containing.
212c0 63 6f 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 connection,.authentication.and.m
212e0 6f 64 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 odel.information...A.backend.for
21300 20 43 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 .ChatGPT.is.pre-defined.by.gptel
21320 2e 20 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 ...Backends.for.other.LLM.provid
21340 65 72 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 ers.(local.or.remote).may.be.con
21360 73 74 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 structed.using.one.of.the.availa
21380 62 6c 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 ble.backend.creation.functions:.
213a0 2d 20 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 -.`gptel-make-openai'.-.`gptel-m
213c0 61 6b 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 ake-azure'.-.`gptel-make-ollama'
213e0 0a 2d 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 .-.`gptel-make-gpt4all'.-.`gptel
21400 2d 6d 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 -make-gemini'.See.their.document
21420 61 74 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 ation.for.more.information.and.t
21440 68 65 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 he.package.README.for.examples."
21460 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 20 27 67 70 74 65 ...:safe.#'always...:group.'gpte
21480 6c 0a 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 l...:type.`(choice...........(co
214a0 6e 73 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 nst.:tag."ChatGPT".,gptel--opena
214c0 69 29 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 i)...........(restricted-sexp.:m
214e0 61 74 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 atch-alternatives.(gptel-backend
21500 2d 70 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 -p.'nil)............:tag."Other.
21520 62 61 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 backend")))..(defvar.gptel-exper
21540 74 2d 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 t-commands.nil..."Whether.experi
21560 6d 65 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 mental.gptel.options.should.be.e
21580 6e 61 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 nabled...This.opens.up.advanced.
215a0 6f 70 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 options.in.`gptel-menu'.")..(def
215c0 76 61 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 var-local.gptel--bounds.nil).(pu
215e0 74 20 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 t.'gptel--bounds.'safe-local-var
21600 69 61 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 iable.#'always)..(defvar.gptel--
21620 6e 75 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 num-messages-to-send.nil).(put.'
21640 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 20 27 73 61 66 gptel--num-messages-to-send.'saf
21660 65 2d 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 e-local-variable.#'always)..(def
21680 63 75 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 custom.gptel-log-level.nil..."Lo
216a0 67 67 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 gging.level.for.gptel...This.is.
216c0 6f 6e 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 one.of.nil.or.the.symbols.info.a
216e0 6e 64 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 nd.debug:..nil:.Don't.log.respon
21700 73 65 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 ses.info:.Log.request.and.respon
21720 73 65 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 se.bodies.debug:.Log.request/res
21740 70 6f 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 ponse.bodies,.headers.and.all.ot
21760 68 65 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 her........connection.settings..
21780 0a 57 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 .When.non-nil,.information.is.lo
217a0 67 67 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 gged.to.`gptel--log-buffer-name'
217c0 2c 0a 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 ,.which.see."...:group.'gptel...
217e0 3a 74 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 :type.'(choice...........(const.
21800 3a 74 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 :tag."No.logging".nil)..........
21820 20 28 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 .(const.:tag."Limited".info)....
21840 20 20 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 .......(const.:tag."Full".debug)
21860 29 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 0a 20 27 67 70 74 )).(make-obsolete-variable..'gpt
21880 65 6c 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 el--debug.'gptel-log-level."0.6.
218a0 35 22 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 5")..(defvar-local.gptel--old-he
218c0 61 64 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 ader-line.nil)....;;.Utility.fun
218e0 63 74 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 ctions..(defun.gptel-api-key-fro
21900 6d 2d 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 m-auth-source.(&optional.host.us
21920 65 72 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 er)..."Lookup.api.key.in.the.aut
21940 68 20 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 h.source..By.default,.the.LLM.ho
21960 73 74 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 st.for.the.active.backend.is.use
21980 64 20 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 d.as.HOST,.and.\"apikey\".as.USE
219a0 52 2e 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 R."...(if-let.((secret..........
219c0 20 20 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 ...(plist-get..............(car.
219e0 28 61 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 (auth-source-search.............
21a00 20 20 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 .......:host.(or.host.(gptel-bac
21a20 6b 65 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 kend-host.gptel-backend)).......
21a40 20 20 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 .............:user.(or.user."api
21a60 6b 65 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 key")....................:requir
21a80 65 20 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 e.'(:secret)))..................
21aa0 20 20 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 .............:secret))).......(i
21ac0 66 20 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 f.(functionp.secret)...........(
21ae0 65 6e 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 encode-coding-string.(funcall.se
21b00 63 72 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 cret).'utf-8).........secret)...
21b20 20 20 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 ..(user-error."No.`gptel-api-key
21b40 27 20 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 '.found.in.the.auth.source")))..
21b60 3b 3b 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 ;;.FIXME.Should.we.utf-8.encode.
21b80 74 68 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 the.api-key.here?.(defun.gptel--
21ba0 67 65 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 get-api-key.(&optional.key)..."G
21bc0 65 74 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 et.api.key.from.KEY,.or.from.`gp
21be0 74 65 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 tel-api-key'."...(when-let*.((ke
21c00 79 2d 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 y-sym.(or.key.(gptel-backend-key
21c20 20 67 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 .gptel-backend)))).....(cl-typec
21c40 61 73 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 ase.key-sym.......(function.(fun
21c60 63 61 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 call.key-sym)).......(string.key
21c80 2d 73 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 -sym).......(symbol.(if-let.((va
21ca0 6c 20 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 l.(symbol-value.key-sym)))......
21cc0 20 20 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 .............(gptel--get-api-key
21ce0 0a 20 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 ....................(symbol-valu
21d00 65 20 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 e.key-sym)).................(err
21d20 6f 72 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 or."`gptel-api-key'.is.not.valid
21d40 22 29 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 "))).......(t.(error."`gptel-api
21d60 2d 6b 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 -key'.is.not.valid")))))..(defsu
21d80 62 73 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 bst.gptel--numberize.(val)..."En
21da0 73 75 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 sure.VAL.is.a.number."...(if.(st
21dc0 72 69 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 ringp.val).(string-to-number.val
21de0 29 20 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 ).val))..(defun.gptel-auto-scrol
21e00 6c 20 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 l.()..."Scroll.window.if.LLM.res
21e20 70 6f 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 ponse.continues.below.viewport..
21e40 0a 4e 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 .Note:.This.will.move.the.cursor
21e60 2e 22 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 ."...(when-let*.((win.(get-buffe
21e80 72 2d 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 r-window.(current-buffer).'visib
21ea0 6c 65 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 le))...............((not.(pos-vi
21ec0 73 69 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 sible-in-window-p.(point).win)))
21ee0 0a 20 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 ...............(scroll-error-top
21f00 2d 62 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 -bottom.t)).....(condition-case.
21f20 6e 69 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 nil.........(with-selected-windo
21f40 77 20 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 w.win...........(scroll-up-comma
21f60 6e 64 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 nd)).......(error.nil))))..(defu
21f80 6e 20 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 n.gptel-beginning-of-response.(&
21fa0 6f 70 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 optional._._.arg)..."Move.point.
21fc0 74 6f 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 to.the.beginning.of.the.LLM.resp
21fe0 6f 6e 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 onse.ARG.times."...(interactive.
22000 22 70 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 "p")...;;.FIXME:.Only.works.for.
22020 61 72 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 arg.==.1...(gptel-end-of-respons
22040 65 20 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 e.nil.nil.(-.(or.arg.1))))..(def
22060 75 6e 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 un.gptel-end-of-response.(&optio
22080 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 20 74 68 nal._._.arg)..."Move.point.to.th
220a0 65 20 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 e.end.of.the.LLM.response.ARG.ti
220c0 6d 65 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 mes."...(interactive.(list.nil.n
220e0 69 6c 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 il......................(prefix-
22100 6e 75 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 numeric-value.current-prefix-arg
22120 29 29 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 )))...(unless.arg.(setq.arg.1)).
22140 20 20 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 ..(let.((search.(if.(>.arg.0)...
22160 20 20 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 ..................#'text-propert
22180 79 2d 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 y-search-forward................
221a0 20 20 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 ...#'text-property-search-backwa
221c0 72 64 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 rd))).....(dotimes.(_.(abs.arg))
221e0 0a 20 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 .......(funcall.search.'gptel.'r
22200 65 73 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 esponse.t).......(if.(>.arg.0)..
22220 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 20 28 63 6f 6e 63 .........(when.(looking-at.(conc
22240 61 74 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 at."\n\\{1,2\\}"................
22260 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 6f .....................(regexp-quo
22280 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 20 20 20 20 te..............................
222a0 20 20 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 ........(gptel-prompt-prefix-str
222c0 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 20 20 20 20 20 20 ing))...........................
222e0 20 20 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 .........."?")).............(got
22300 6f 2d 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 o-char.(match-end.0))).........(
22320 77 68 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 when.(looking-back.(concat.(rege
22340 78 70 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 xp-quote........................
22360 20 20 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 ..............(gptel-response-pr
22380 65 66 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 efix-string))...................
223a0 20 20 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 .................."?")..........
223c0 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 2d 6d 69 6e 29 29 0a ...................(point-min)).
223e0 20 20 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 ..........(goto-char.(match-begi
22400 6e 6e 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 nning.0)))))))..(defmacro.gptel-
22420 2d 61 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 -at-word-end.(&rest.body)..."Exe
22440 63 75 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 cute.BODY.at.end.of.the.current.
22460 77 6f 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 word.or.punctuation."...`(save-e
22480 78 63 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 xcursion......(skip-syntax-forwa
224a0 72 64 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 rd."w.")......,@body))..(defun.g
224c0 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 20 28 29 0a 20 20 28 ptel-prompt-prefix-string.()...(
224e0 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 2d 70 or.(alist-get.major-mode.gptel-p
22500 72 6f 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 rompt-prefix-alist).""))..(defun
22520 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 69 6e 67 20 28 29 .gptel-response-prefix-string.()
22540 0a 20 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 ...(or.(alist-get.major-mode.gpt
22560 65 6c 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 el-response-prefix-alist).""))..
22580 28 64 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 (defvar-local.gptel--backend-nam
225a0 65 20 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 e.nil..."Store.to.persist.backen
225c0 64 20 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 d.name.across.Emacs.sessions...N
225e0 6f 74 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 ote:.Changing.this.variable.does
22600 20 6e 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 .not.affect.gptel\\='s.behavior.
22620 69 6e 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 in.any.way.").(put.'gptel--backe
22640 6e 64 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 nd-name.'safe-local-variable.#'a
22660 6c 77 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 lways)..(defun.gptel--get-buffer
22680 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 65 6c 20 72 -bounds.()..."Return.the.gptel.r
226a0 65 73 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 esponse.boundaries.in.the.buffer
226c0 20 61 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 .as.an.alist."...(save-excursion
226e0 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 20 20 20 20 28 77 69 .....(save-restriction.......(wi
22700 64 65 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 den).......(goto-char.(point-max
22720 29 29 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 )).......(let.((prop).(bounds)).
22740 20 20 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 ........(while.(setq.prop.(text-
22760 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........
22780 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 20 27 72 65 73 70 ....................'gptel.'resp
227a0 6f 6e 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 onse.t))...........(push.(cons.(
227c0 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)......
227e0 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 6e 64 .................(prop-match-end
22800 20 70 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 .prop)).................bounds))
22820 0a 20 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 .........bounds))))..(defun.gpte
22840 6c 2d 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 l--get-bounds.()..."Return.the.g
22860 70 74 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 ptel.response.boundaries.around.
22880 70 6f 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 point."...(let.(prop).....(save-
228a0 65 78 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 excursion.......(when.(text-prop
228c0 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 20 erty-search-backward............
228e0 20 20 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 ..'gptel.'response.t).........(w
22900 68 65 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 hen.(setq.prop.(text-property-se
22920 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 20 20 arch-forward....................
22940 20 20 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 .......'gptel.'response.t)).....
22960 20 20 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 ......(cons.(prop-match-beginnin
22980 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 20 20 20 20 28 70 g.prop).......................(p
229a0 72 6f 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 rop-match-end.prop)))))))..(defu
229c0 6e 20 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 n.gptel--in-response-p.(&optiona
229e0 6c 20 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 l.pt)..."Check.if.position.PT.is
22a00 20 69 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 .inside.a.gptel.response."...(ge
22a20 74 2d 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 t-char-property.(or.pt.(point)).
22a40 27 67 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 'gptel))..(defun.gptel--at-respo
22a60 6e 73 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 nse-history-p.(&optional.pt)..."
22a80 43 68 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 Check.if.gptel.response.at.posit
22aa0 69 6f 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 ion.PT.has.variants."...(get-cha
22ac0 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 70 74 65 r-property.(or.pt.(point)).'gpte
22ae0 6c 2d 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 l-history))....;;.Logging..(defc
22b00 6f 6e 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 onst.gptel--log-buffer-name."*gp
22b20 74 65 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 tel-log*"..."Log.buffer.for.gpte
22b40 6c 2e 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 l.")..(declare-function.json-pre
22b60 74 74 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 tty-print."json")..(defun.gptel-
22b80 2d 6c 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 -log.(data.&optional.type.no-jso
22ba0 6e 29 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 n)..."Log.DATA.to.`gptel--log-bu
22bc0 66 66 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 ffer-name'...TYPE.is.a.label.for
22be0 20 64 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 .data.being.logged...DATA.is.ass
22c00 75 6d 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 umed.to.be.Valid.JSON.unless.NO-
22c20 4a 53 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 JSON.is.t."...(with-current-buff
22c40 65 72 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 er.(get-buffer-create.gptel--log
22c60 2d 62 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 -buffer-name).....(let.((p.(goto
22c80 2d 63 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 -char.(point-max)))).......(unle
22ca0 73 73 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 ss.(bobp).(insert."\n")).......(
22cc0 69 6e 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 insert.(format."{\"gptel\":.\"%s
22ce0 5c 22 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 \",.".(or.type."none")).........
22d00 20 20 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 ......(format-time-string."\"tim
22d20 65 73 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 estamp\":.\"%Y-%m-%d.%H:%M:%S\"}
22d40 5c 6e 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 \n")...............data).......(
22d60 75 6e 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 unless.no-json.(ignore-errors.(j
22d80 73 6f 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 son-pretty-print.p.(point)))))))
22da0 0a 0a 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 ....;;.Saving.and.restoring.stat
22dc0 65 0a 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 e..(defun.gptel--restore-state.(
22de0 29 0a 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 )..."Restore.gptel.state.when.tu
22e00 72 6e 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 rning.on.`gptel-mode'."...(when.
22e20 28 62 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 (buffer-file-name).....(pcase.ma
22e40 6a 6f 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 jor-mode.......('org-mode.......
22e60 20 28 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 .(require.'gptel-org)........(gp
22e80 74 65 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 tel-org--restore-state)).......(
22ea0 5f 20 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 _.(when.gptel--bounds...........
22ec0 20 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 .(mapc.(pcase-lambda.(`(,beg...,
22ee0 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 20 20 20 20 20 20 28 end))..........................(
22f00 70 75 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 put-text-property.beg.end.'gptel
22f20 20 27 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 .'response))..................gp
22f40 74 65 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 tel--bounds)............(message
22f60 20 22 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 ."gptel.chat.restored.")).......
22f80 20 20 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 ...(when.gptel--backend-name....
22fa0 20 20 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 ........(if-let.((backend.(alist
22fc0 2d 67 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 -get............................
22fe0 20 20 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 ...gptel--backend-name.gptel--kn
23000 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 20 20 20 20 20 20 own-backends....................
23020 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 29 29 0a 20 20 ...........nil.nil.#'equal)))...
23040 20 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 .............(setq-local.gptel-b
23060 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 28 6d 65 ackend.backend)..............(me
23080 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 75 74 65 ssage................(substitute
230a0 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 20 28 63 -command-keys.................(c
230c0 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 20 6e 6f oncat.................."Could.no
230e0 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 5c 22 21 t.activate.gptel.backend.\"%s\"!
23100 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 62 61 63 ..".................."Switch.bac
23120 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 65 6e 74 kends.with.\\[universal-argument
23140 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 20 20 20 ].\\[gptel-send]"...............
23160 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 20 20 20 ...".before.using.gptel.")).....
23180 20 20 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 ...........gptel--backend-name))
231a0 29 29 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 )))))..(defun.gptel--save-state.
231c0 28 29 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 ()..."Write.the.gptel.state.to.t
231e0 68 65 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 he.buffer...This.saves.chat.meta
23200 64 61 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 data.when.writing.the.buffer.to.
23220 64 69 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 disk...To.restore.a.chat.session
23240 2c 20 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 ,.turn.on.`gptel-mode'.after.ope
23260 6e 69 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 ning.the.file."...(pcase.major-m
23280 6f 64 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 ode.....('org-mode......(require
232a0 20 27 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 .'gptel-org)......(gptel-org--sa
232c0 76 65 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 ve-state)).....(_.(let.((print-e
232e0 73 63 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 scape-newlines.t))..........(sav
23300 65 2d 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 e-excursion............(save-res
23320 74 72 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 triction..............(add-file-
23340 6c 6f 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 local-variable.'gptel-model.gpte
23360 6c 2d 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 l-model)..............(add-file-
23380 6c 6f 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 local-variable.'gptel--backend-n
233a0 61 6d 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 ame.............................
233c0 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 20 67 70 ..........(gptel-backend-name.gp
233e0 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 28 75 6e 6c 65 tel-backend))..............(unle
23400 73 73 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 ss.(equal.(default-value.'gptel-
23420 74 65 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 temperature).gptel-temperature).
23440 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 2d 76 ...............(add-file-local-v
23460 61 72 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 ariable.'gptel-temperature.gptel
23480 2d 74 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 -temperature))..............(unl
234a0 65 73 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 ess.(string=.(default-value.'gpt
234c0 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 20 20 20 20 20 20 el--system-message).............
234e0 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 79 73 74 65 6d 2d ..................gptel--system-
23500 6d 65 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 message)................(add-fil
23520 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 73 79 73 74 65 6d 2d e-local-variable.'gptel--system-
23540 6d 65 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 message.gptel--system-message)).
23560 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 61 78 2d 74 6f 6b .............(when.gptel-max-tok
23580 65 6e 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 ens................(add-file-loc
235a0 61 6c 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 al-variable.'gptel-max-tokens.gp
235c0 74 65 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 tel-max-tokens))..............(a
235e0 64 64 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 dd-file-local-variable.'gptel--b
23600 6f 75 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 ounds.(gptel--get-buffer-bounds)
23620 29 29 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 )))))))....;;.Minor.mode.and.UI.
23640 0a 3b 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 .;;.NOTE:.It's.not.clear.that.th
23660 69 73 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 is.is.the.best.strategy:.(add-to
23680 2d 6c 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 -list.'text-property-default-non
236a0 73 74 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 sticky.'(gptel...t))..;;;###auto
236c0 6c 6f 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 load.(define-minor-mode.gptel-mo
236e0 64 65 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 de..."Minor.mode.for.interacting
23700 20 77 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 .with.LLMs."...:lighter.".GPT"..
23720 20 3a 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 .:keymap...(let.((map.(make-spar
23740 73 65 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 se-keymap))).....(define-key.map
23760 20 28 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 .(kbd."C-c.RET").#'gptel-send)..
23780 20 20 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 ...map)...(if.gptel-mode.......(
237a0 70 72 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 progn.........(unless.(memq.majo
237c0 72 2d 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 r-mode.'(org-mode.markdown-mode.
237e0 74 65 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 text-mode))...........(gptel-mod
23800 65 20 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 e.-1)...........(user-error.(for
23820 6d 61 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 mat."`gptel-mode'.is.not.support
23840 65 64 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 ed.in.`%s'.".major-mode)))......
23860 20 20 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 ...(add-hook.'before-save-hook.#
23880 27 67 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 'gptel--save-state.nil.t).......
238a0 20 20 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 ..(gptel--restore-state)........
238c0 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 20 .(if.gptel-use-header-line......
238e0 20 20 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 .....(setq.gptel--old-header-lin
23900 65 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 20 e.header-line-format............
23920 20 20 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 .....header-line-format.........
23940 20 20 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 ........(list.'(:eval.(concat.(p
23960 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 73 70 61 63 65 20 3a ropertize.".".'display.'(space.:
23980 61 6c 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 align-to.0))....................
239a0 20 20 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 ............(format."%s".(gptel-
239c0 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 29 29 29 0a 20 backend-name.gptel-backend))))..
239e0 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 65 72 74 69 7a 65 .....................(propertize
23a00 20 22 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 .".Ready".'face.'success).......
23a20 20 20 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 ................'(:eval.........
23a40 20 20 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 ................(let.((system...
23a60 20 20 20 20 20 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 .............................(fo
23a80 72 6d 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 rmat."[Prompt:.%s]".............
23aa0 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 63 61 72 2d 73 61 66 ....................(or.(car-saf
23ac0 65 20 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 e.(rassoc.gptel--system-message.
23ae0 67 70 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 gptel-directives))..............
23b00 20 20 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 ....................(truncate-st
23b20 72 69 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 ring-to-width.gptel--system-mess
23b40 61 67 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 age.15.nil.nil.t)))))...........
23b60 20 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 20 20 20 20 20 ...............(concat..........
23b80 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 20 .................(propertize....
23ba0 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 20 22 20 27 64 69 73 ........................".".'dis
23bc0 70 6c 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 play............................
23be0 60 28 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 `(space.:align-to.(-.right.,(+.2
23c00 20 28 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 .(length.gptel-model).(length.sy
23c20 73 74 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 stem))))).......................
23c40 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 20 20 20 20 20 ....(propertize.................
23c60 20 20 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 ...........(buttonize.system....
23c80 20 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 .........................(lambda
23ca0 20 28 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 .(&rest._).(gptel-system-prompt)
23cc0 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 27 6d ))............................'m
23ce0 6f 75 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 ouse-face.'highlight............
23d00 20 20 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 ................'help-echo......
23d20 20 20 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 ......................"System.me
23d40 73 73 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 ssage.for.buffer")..............
23d60 20 20 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 ............."."................
23d80 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 20 20 20 20 ...........(propertize..........
23da0 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 20 28 63 6f ..................(buttonize.(co
23dc0 6e 63 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 ncat."[".gptel-model."]").......
23de0 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 26 ......................(lambda.(&
23e00 72 65 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 rest._).(gptel-menu)))..........
23e20 20 20 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 ..................'mouse-face.'h
23e40 69 67 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 ighlight........................
23e60 20 20 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 ....'help-echo."GPT.model.in.use
23e80 22 29 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 "))))))...........(setq.mode-lin
23ea0 65 2d 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 e-process.................'(:eva
23ec0 6c 20 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 l.(concat."."...................
23ee0 20 20 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 .......(buttonize.gptel-model...
23f00 20 20 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 ..........................(lambd
23f20 61 20 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 a.(&rest._).(gptel-menu)))))))).
23f40 20 20 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 ....(if.gptel-use-header-line...
23f60 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 6f 72 6d 61 74 20 67 ......(setq.header-line-format.g
23f80 70 74 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 ptel--old-header-line...........
23fa0 20 20 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 ....gptel--old-header-line.nil).
23fc0 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 6e 69 ......(setq.mode-line-process.ni
23fe0 6c 29 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 l))))..(defun.gptel--update-stat
24000 75 73 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 us.(&optional.msg.face)..."Updat
24020 65 20 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 e.status.MSG.in.FACE."...(when.g
24040 70 74 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 ptel-mode.....(if.gptel-use-head
24060 65 72 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 er-line.........(and.(consp.head
24080 65 72 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 er-line-format)............(setf
240a0 20 28 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 .(nth.1.header-line-format).....
240c0 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 6d 73 67 20 27 66 61 .............(propertize.msg.'fa
240e0 63 65 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 ce.face))).......(if.(member.msg
24100 20 27 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 .'(".Typing...".".Waiting...")).
24120 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 70 72 6f 63 65 73 ..........(setq.mode-line-proces
24140 73 20 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 s.(propertize.msg.'face.face))..
24160 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 0a 20 .......(setq.mode-line-process..
24180 20 20 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 .............'(:eval.(concat."."
241a0 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 62 75 74 74 6f 6e 69 ........................(buttoni
241c0 7a 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 20 20 20 20 20 20 ze.gptel-model..................
241e0 20 20 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 ...........(lambda.(&rest._).(gp
24200 74 65 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 tel-menu)))))).........(message.
24220 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 29 29 0a 20 (propertize.msg.'face.face))))..
24240 20 20 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 ...(force-mode-line-update)))...
24260 0a 3b 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 .;;.Send.queries,.handle.respons
24280 65 73 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 es.(cl-defun.gptel-request.....(
242a0 26 6f 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 &optional.prompt.&key.callback..
242c0 20 20 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 ..............(buffer.(current-b
242e0 75 66 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 uffer))................position.
24300 63 6f 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 context.dry-run................(
24320 73 74 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 stream.nil).(in-place.nil)......
24340 20 20 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 ..........(system.gptel--system-
24360 6d 65 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 message))..."Request.a.response.
24380 66 72 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 from.the.`gptel-backend'.for.PRO
243a0 4d 50 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 MPT...The.request.is.asynchronou
243c0 73 2c 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 s,.the.function.immediately.retu
243e0 72 6e 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 rns.with.the.data.that.was.sent.
24400 0a 0a 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 ..Note:.This.function.is.not.ful
24420 6c 79 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 ly.self-contained...Consider.let
24440 2d 62 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 -binding.the.parameters.`gptel-b
24460 61 63 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 ackend'.and.`gptel-model'.around
24480 20 63 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 .calls.to.it.as.required...If.PR
244a0 4f 4d 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 OMPT.is.-.a.string,.it.is.used.t
244c0 6f 20 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 o.create.a.full.prompt.suitable.
244e0 66 6f 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 for...sending.to.the.LLM..-.nil.
24500 62 75 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 but.region.is.active,.the.region
24520 20 63 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 .contents.are.used..-.nil,.the.c
24540 75 72 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 urrent.buffer's.contents.up.to.(
24560 70 6f 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 point).are.used....Previous.resp
24580 6f 6e 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 onses.from.the.LLM.are.identifie
245a0 64 20 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 d.as.responses..-.A.list.of.plis
245c0 74 73 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 ts,.it.is.used.as.is...Keyword.a
245e0 72 67 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 rguments:..CALLBACK,.if.supplied
24600 2c 20 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 ,.is.a.function.of.two.arguments
24620 2c 20 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 ,.called.with.the.RESPONSE.(a.st
24640 72 69 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 ring).and.INFO.(a.plist):...(cal
24660 6c 62 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 lback.RESPONSE.INFO)..RESPONSE.i
24680 73 20 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 s.nil.if.there.was.no.response.o
246a0 72 20 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 r.an.error...The.INFO.plist.has.
246c0 28 61 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 (at.least).the.following.keys:.:
246e0 64 61 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 data.........-.The.request.data.
24700 69 6e 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 included.with.the.query.:positio
24720 6e 20 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 n.....-.marker.at.the.point.the.
24740 72 65 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 request.was.sent,.unless........
24760 20 20 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 .........POSITION.is.specified..
24780 3a 62 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 :buffer.......-.The.buffer.curre
247a0 6e 74 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 nt.when.the.request.was.sent,...
247c0 20 20 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 ..............unless.BUFFER.is.s
247e0 70 65 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 pecified..:status.......-.Short.
24800 73 74 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 string.describing.the.result.of.
24820 74 68 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 the.request..Example.of.a.callba
24840 63 6b 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 ck.that.messages.the.user.with.t
24860 68 65 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 he.response.and.info:...(lambda.
24880 28 72 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 (response.info)...(if.response..
248a0 20 20 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 .....(let.((posn.(marker-positio
248c0 6e 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 29 0a 20 n.(plist-get.info.:position)))..
248e0 20 20 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 ...........(buf..(buffer-name.(p
24900 6c 69 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 list-get.info.:buffer)))).......
24920 20 20 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 ..(message.\"Response.for.reques
24940 74 20 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 t.from.%S.at.%d:.%s\"...........
24960 20 20 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 .......buf.posn.response)).....(
24980 6d 65 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 message.\"gptel-request.failed.w
249a0 69 74 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 ith.message:.%s\"..............(
249c0 70 6c 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 plist-get.info.:status))))..Or,.
249e0 66 6f 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 for.just.the.response:...(lambda
24a00 20 28 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 .(response._)...;;.Do.something.
24a20 77 69 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 with.response...(message.(rot13-
24a40 73 74 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 string.response)))..If.CALLBACK.
24a60 69 73 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 is.omitted,.the.response.is.inse
24a80 72 74 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 rted.at.the.point.the.request.wa
24aa0 73 20 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 s.sent...BUFFER.and.POSITION.are
24ac0 20 74 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 .the.buffer.and.position.(intege
24ae0 72 20 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 r.or.marker).at.which.the.respon
24b00 73 65 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 se.is.inserted...If.a.CALLBACK.i
24b20 73 0a 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 s.specified,.no.response.is.inse
24b40 72 74 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 rted.and.these.arguments.are.ign
24b60 6f 72 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 ored,.but.they.are.still.availab
24b80 6c 65 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 le.in.the.INFO.plist.passed.to.C
24ba0 41 4c 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 ALLBACK.for.you.to.use...BUFFER.
24bc0 64 65 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 defaults.to.the.current.buffer,.
24be0 61 6e 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 and.POSITION.to.the.value.of.(po
24c00 69 6e 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 int).or.(region-end),.depending.
24c20 6f 6e 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 on.whether.the.region.is.active.
24c40 0a 0a 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 ..CONTEXT.is.any.additional.data
24c60 20 6e 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 .needed.for.the.callback.to.run.
24c80 20 49 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 .It.is.included.in.the.INFO.argu
24ca0 6d 65 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 ment.to.the.callback...SYSTEM.is
24cc0 20 74 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 .the.system.message.(chat.direct
24ce0 69 76 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 ive).sent.to.the.LLM..If.omitted
24d00 2c 20 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 ,.the.value.of.`gptel--system-me
24d20 73 73 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 ssage'.for.the.current.buffer.is
24d40 20 75 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 .used...The.following.keywords.a
24d60 72 65 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 re.mainly.for.internal.use:..IN-
24d80 50 4c 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 PLACE.is.a.boolean.used.by.the.d
24da0 65 66 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 efault.callback.when.inserting.t
24dc0 68 65 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 he.response.to.determine.if.deli
24de0 6d 69 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 miters.are.needed.between.the.pr
24e00 6f 6d 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 ompt.and.the.response...STREAM.i
24e20 73 20 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 s.a.boolean.that.determines.if.t
24e40 68 65 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 he.response.should.be.streamed,.
24e60 61 73 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 as.in.`gptel-stream'..Do.not.set
24e80 20 74 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 .this.if.you.are.specifying.a.cu
24ea0 73 74 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 stom.CALLBACK!..If.DRY-RUN.is.no
24ec0 6e 2d 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 n-nil,.construct.and.return.the.
24ee0 66 75 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 full.query.data.as.usual,.but.do
24f00 20 6e 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 .not.send.the.request...Model.pa
24f20 72 61 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 rameters.can.be.let-bound.around
24f40 20 63 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 .calls.to.this.function."...(dec
24f60 6c 61 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 lare.(indent.1))...(let*.((gptel
24f80 2d 2d 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 --system-message.system)........
24fa0 20 20 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 ..(gptel-stream.stream).........
24fc0 20 28 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 .(start-marker...........(cond..
24fe0 20 20 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 ..........((null.position)......
25000 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 20 20 20 20 20 .......(if.(use-region-p).......
25020 20 20 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 ..........(set-marker.(make-mark
25040 65 72 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 er).(region-end))...............
25060 28 67 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 (gptel--at-word-end.(point-marke
25080 72 29 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 r))))............((markerp.posit
250a0 69 6f 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 ion).position)............((inte
250c0 67 65 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 gerp.position).............(set-
250e0 6d 61 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 marker.(make-marker).position.bu
25100 66 66 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 ffer))))..........(full-prompt..
25120 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 28 28 6e 75 6c 6c .........(cond............((null
25140 20 70 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 .prompt).(gptel--create-prompt.s
25160 74 61 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 tart-marker))............((strin
25180 67 70 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 gp.prompt).............;;.FIXME.
251a0 44 65 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 Dear.reader,.welcome.to.Jank.Cit
251c0 79 3a 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 y:.............(with-temp-buffer
251e0 0a 20 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 ...............(let.((gptel-mode
25200 6c 20 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 l.(buffer-local-value.'gptel-mod
25220 65 6c 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 el.buffer)).....................
25240 28 67 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 (gptel-backend.(buffer-local-val
25260 75 65 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 ue.'gptel-backend.buffer))).....
25280 20 20 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 ............(insert.prompt).....
252a0 20 20 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 ............(gptel--create-promp
252c0 74 29 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 t))))............((consp.prompt)
252e0 20 70 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 .prompt)))..........(request-dat
25300 61 20 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 a.(gptel--request-data.gptel-bac
25320 6b 65 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 kend.full-prompt))..........(inf
25340 6f 20 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 o.(list.:data.request-data......
25360 20 20 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 ................:buffer.buffer..
25380 20 20 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 ....................:position.st
253a0 61 72 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 art-marker))).....(when.context.
253c0 28 70 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 (plist-put.info.:context.context
253e0 29 29 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 )).....(when.in-place.(plist-put
25400 20 69 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 .info.:in-place.in-place)).....(
25420 75 6e 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 unless.dry-run.......(funcall.(i
25440 66 20 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 f.gptel-use-curl................
25460 20 20 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 ....#'gptel-curl-get-response.#'
25480 67 70 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 gptel--url-get-response)........
254a0 20 20 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 ........info.callback)).....requ
254c0 65 73 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 est-data))..;;.TODO:.Handle.mult
254e0 69 70 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 iple.requests(#15)..(Only.one.re
25500 71 75 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 quest.from.one.buffer.at.a.time?
25520 29 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 6c 2d 73 65 ).;;;###autoload.(defun.gptel-se
25540 6e 64 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 nd.(&optional.arg)..."Submit.thi
25560 73 20 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 s.prompt.to.the.current.LLM.back
25580 65 6e 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 end...By.default,.the.contents.o
255a0 66 20 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 f.the.buffer.up.to.the.cursor.po
255c0 73 69 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 sition.are.sent...If.the.region.
255e0 69 73 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 is.active,.its.contents.are.sent
25600 0a 69 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 .instead...The.response.from.the
25620 20 4c 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 .LLM.is.inserted.below.the.curso
25640 72 20 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 r.position.at.the.time.of.sendin
25660 67 2e 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 g...To.change.this.behavior.or.m
25680 6f 64 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 odel.parameters,.use.prefix.arg.
256a0 41 52 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 ARG.activate.a.transient.menu.wi
256c0 74 68 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 th.more.options.instead...This.c
256e0 6f 6d 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 ommand.is.asynchronous,.you.can.
25700 63 6f 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 continue.to.use.Emacs.while.wait
25720 69 6e 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 ing.for.the.response."...(intera
25740 63 74 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 ctive."P")...(if.(and.arg.(requi
25760 72 65 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 re.'gptel-transient.nil.t)).....
25780 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 6d 65 ..(call-interactively.#'gptel-me
257a0 6e 75 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 nu)...(message."Querying.%s...".
257c0 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 61 63 6b 65 6e (gptel-backend-name.gptel-backen
257e0 64 29 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 d))...(gptel--sanitize-model)...
25800 28 67 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 (gptel-request.nil.:stream.gptel
25820 2d 73 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 -stream)...(gptel--update-status
25840 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 0a 0a 28 64 65 63 .".Waiting...".'warning)))..(dec
25860 6c 61 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 lare-function.json-pretty-print-
25880 62 75 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 buffer."json").(defun.gptel--ins
258a0 70 65 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 pect-query.(request-data.&option
258c0 61 6c 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 al.arg)..."Show.REQUEST-DATA,.th
258e0 65 20 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 e.full.LLM.query.to.be.sent,.in.
25900 61 20 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 a.buffer...This.functions.as.a.d
25920 72 79 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 ry.run.of.`gptel-send'...If.ARG.
25940 69 73 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 is.the.symbol.json,.show.the.enc
25960 6f 64 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 oded.JSON.query.instead.of.the.l
25980 69 73 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 isp.structure.gptel.uses."...(wi
259a0 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
259c0 65 61 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 eate."*gptel-query*").....(let.(
259e0 28 73 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 (standard-output.(current-buffer
25a00 29 29 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 ))...........(inhibit-read-only.
25a20 74 29 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 t)).......(buffer-disable-undo).
25a40 20 20 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 ......(erase-buffer).......(if.(
25a60 65 71 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 eq.arg.'json)...........(progn.(
25a80 66 75 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 fundamental-mode)...............
25aa0 20 20 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 ...(insert.(gptel--json-encode.r
25ac0 65 71 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 equest-data))..................(
25ae0 6a 73 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 json-pretty-print-buffer))......
25b00 20 20 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 ...(lisp-data-mode).........(pri
25b20 6e 31 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 n1.request-data).........(pp-buf
25b40 66 65 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 fer)).......(goto-char.(point-mi
25b60 6e 29 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 n)).......(view-mode.1).......(d
25b80 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 66 66 65 72 29 20 67 isplay-buffer.(current-buffer).g
25ba0 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 29 29 29 29 0a 0a ptel-display-buffer-action))))..
25bc0 28 64 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 (defun.gptel--insert-response.(r
25be0 65 73 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 esponse.info)..."Insert.the.LLM.
25c00 52 45 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 RESPONSE.into.the.gptel.buffer..
25c20 0a 49 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 .INFO.is.a.plist.containing.info
25c40 72 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 rmation.relevant.to.this.buffer.
25c60 0a 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 .See.`gptel--url-get-response'.f
25c80 6f 72 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 or.details."...(let*.((status-st
25ca0 72 20 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 r..(plist-get.info.:status))....
25cc0 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 69 ......(gptel-buffer.(plist-get.i
25ce0 6e 66 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 nfo.:buffer))..........(start-ma
25d00 72 6b 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 rker.(plist-get.info.:position))
25d20 0a 20 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 ..........response-beg.response-
25d40 65 6e 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 end).....;;.Handle.read-only.buf
25d60 66 65 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 fers.....(when.(with-current-buf
25d80 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 20 20 28 6f 72 fer.gptel-buffer.............(or
25da0 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 20 20 20 20 20 .buffer-read-only...............
25dc0 20 20 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 ..(get-char-property.start-marke
25de0 72 20 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 r.'read-only))).......(message."
25e00 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.
25e20 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*
25e40 5c 22 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 \"").......(display-buffer......
25e60 20 20 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 ..(with-current-buffer.(get-buff
25e80 65 72 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 er-create."*LLM.response*").....
25ea0 20 20 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 .....(visual-line-mode.1).......
25ec0 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 20 20 20 20 ...(goto-char.(point-max))......
25ee0 20 20 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 ....(move-marker.start-marker.(p
25f00 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 20 20 20 20 20 20 20 oint).(current-buffer)).........
25f20 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 27 28 28 64 69 73 .(current-buffer))........'((dis
25f40 70 6c 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 play-buffer-reuse-window........
25f60 20 20 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 ...display-buffer-pop-up-window)
25f80 0a 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 76 69 73 ..........(reusable-frames...vis
25fa0 69 62 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 ible)))).....;;.Insert.response.
25fc0 61 6e 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 and.status.message/error.message
25fe0 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 67 70 74 65 6c 2d .....(with-current-buffer.gptel-
26000 62 75 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 buffer.......(if.response.......
26020 20 20 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 ....(progn.............(setq.res
26040 70 6f 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 ponse.(gptel--transform-response
26060 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 ................................
26080 72 65 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 response.gptel-buffer)).........
260a0 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 20 20 ....(save-excursion.............
260c0 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 20 20 ..(put-text-property............
260e0 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.'
26100 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 20 response.response)..............
26120 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 72 2d 62 75 .(with-current-buffer.(marker-bu
26140 66 66 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 ffer.start-marker)..............
26160 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).....
26180 20 20 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 ............(run-hooks.'gptel-pr
261a0 65 2d 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 e-response-hook)................
261c0 20 28 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 .(unless.(or.(bobp).(plist-get.i
261e0 6e 66 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 nfo.:in-place)).................
26200 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 20 20 20 20 20 20 20 ..(insert."\n\n")...............
26220 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 20 20 20 20 20 ....(when.gptel-mode............
26240 20 20 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 .........(insert.(gptel-response
26260 2d 70 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 -prefix-string))))..............
26280 20 20 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 ...(setq.response-beg.(point)).;
262a0 53 61 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 Save.response.start.position....
262c0 20 20 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 .............(insert.response)..
262e0 20 20 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 ...............(setq.response-en
26300 64 20 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 d.(point)).................(puls
26320 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 6e 20 72 65 73 e-momentary-highlight-region.res
26340 70 6f 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 ponse-beg.response-end).........
26360 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 69 6e 73 65 72 74 ........(when.gptel-mode.(insert
26380 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 74 72 ."\n\n".(gptel-prompt-prefix-str
263a0 69 6e 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 ing)))).;Save.response.end.posit
263c0 69 6f 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 ion...............(when.gptel-mo
263e0 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 22 20 52 65 61 64 79 de.(gptel--update-status.".Ready
26400 22 20 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 ".'success)))).........(gptel--u
26420 70 64 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 pdate-status..........(format.".
26440 52 65 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 Response.Error:.%s".status-str).
26460 27 65 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 'error).........(message."gptel.
26480 72 65 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 response.error:.(%s).%s"........
264a0 20 20 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 ..........status-str.(plist-get.
264c0 69 6e 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 info.:error)))).....;;.Run.hook.
264e0 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 77 2d in.visible.window.to.set.window-
26500 70 6f 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 point,.BUG.#269.....(if-let.((gp
26520 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 77 20 67 70 tel-window.(get-buffer-window.gp
26540 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 20 20 20 28 tel-buffer.'visible))).........(
26560 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 2d 77 69 6e 64 6f with-selected-window.gptel-windo
26580 77 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 72 67 73 20 w...........(run-hook-with-args.
265a0 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 6e 73 20 72 'gptel-post-response-functions.r
265c0 65 73 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 esponse-beg.response-end))......
265e0 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 66 66 .(with-current-buffer.gptel-buff
26600 65 72 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 er.........(run-hook-with-args.'
26620 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 20 72 65 gptel-post-response-functions.re
26640 73 70 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 sponse-beg.response-end)))))..(d
26660 65 66 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 efun.gptel--create-prompt.(&opti
26680 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 20 66 75 6c onal.prompt-end)..."Return.a.ful
266a0 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 68 65 20 63 l.conversation.prompt.from.the.c
266c0 6f 6e 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 ontents.of.this.buffer...If.`gpt
266e0 65 6c 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 el--num-messages-to-send'.is.set
26700 2c 20 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 ,.limit.to.that.many.recent.exch
26720 61 6e 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 anges...If.the.region.is.active.
26740 6c 69 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 limit.the.prompt.to.the.region.c
26760 6f 6e 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 ontents.instead...If.PROMPT-END.
26780 28 61 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 (a.marker).is.provided,.end.the.
267a0 70 72 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 prompt.contents.there."...(save-
267c0 65 78 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 excursion.....(save-restriction.
267e0 20 20 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 ......(let.((max-entries.(and.gp
26800 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 20 20 20 20 tel--num-messages-to-send.......
26820 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 2a 20 32 20 67 70 74 ........................(*.2.gpt
26840 65 6c 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 el--num-messages-to-send))))....
26860 20 20 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 .....(cond..........((use-region
26880 2d 70 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 -p)...........;;.Narrow.to.regio
268a0 6e 0a 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 n...........(narrow-to-region.(r
268c0 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 0a 20 egion-beginning).(region-end))..
268e0 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 78 29 29 .........(goto-char.(point-max))
26900 0a 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 72 20 ...........(gptel--parse-buffer.
26920 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 0a 20 20 20 20 gptel-backend.max-entries)).....
26940 20 20 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 .....((derived-mode-p.'org-mode)
26960 0a 20 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 ...........(require.'gptel-org).
26980 20 20 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 ..........(gptel-org--create-pro
269a0 6d 70 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 mpt.(or.prompt-end.(point-max)))
269c0 29 0a 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 )..........(t.(goto-char.(or.pro
269e0 6d 70 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 mpt-end.(point-max)))...........
26a00 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 74 65 6c 2d 62 61 63 ..(gptel--parse-buffer.gptel-bac
26a20 6b 65 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 kend.max-entries)))))))..(cl-def
26a40 67 65 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 generic.gptel--parse-buffer.(bac
26a60 6b 65 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 kend.max-entries)..."Parse.curre
26a80 6e 74 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 nt.buffer.backwards.from.point.a
26aa0 6e 64 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 nd.return.a.list.of.prompts...BA
26ac0 43 4b 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 CKEND.is.the.LLM.backend.in.use.
26ae0 0a 0a 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 ..MAX-ENTRIES.is.the.number.of.q
26b00 75 65 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 ueries/responses.to.include.for.
26b20 63 6f 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 contexbt.")..(cl-defgeneric.gpte
26b40 6c 2d 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 l--request-data.(backend.prompts
26b60 29 0a 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 )..."Generate.a.plist.of.all.dat
26b80 61 20 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 a.for.an.LLM.query...BACKEND.is.
26ba0 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 50 52 4f 4d 50 54 53 the.LLM.backend.in.use...PROMPTS
26bc0 20 69 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 .is.the.plist.of.previous.user.q
26be0 75 65 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 ueries.and.LLM.responses.")..;;.
26c00 54 4f 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 TODO:.Use.`run-hook-wrapped'.wit
26c20 68 20 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 h.an.accumulator.instead.to.hand
26c40 6c 65 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 le.;;.buffer-local.hooks,.etc..(
26c60 64 65 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 defun.gptel--transform-response.
26c80 28 63 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 (content-str.buffer)..."Filter.C
26ca0 4f 4e 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 ONTENT-STR.through.`gptel-respon
26cc0 73 65 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 se-filter-functions`...BUFFER.is
26ce0 20 70 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 .passed.along.with.CONTENT-STR.t
26d00 6f 20 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 o.each.function.in.this.hook."..
26d20 20 28 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 .(let.((filtered-str.content-str
26d40 29 29 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 )).....(dolist.(filter-func.gpte
26d60 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 20 66 69 6c 74 l-response-filter-functions.filt
26d80 65 72 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 ered-str).......(condition-case.
26da0 6e 69 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 nil...........(when.(functionp.f
26dc0 69 6c 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 ilter-func).............(setq.fi
26de0 6c 74 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 ltered-str...................(fu
26e00 6e 63 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 ncall.filter-func.filtered-str.b
26e20 75 66 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 uffer))).........(error.........
26e40 20 28 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 .(display-warning.'(gptel.filter
26e60 2d 66 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 -functions).....................
26e80 20 20 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 ......(format."Function.%S.retur
26ea0 6e 65 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 ned.an.error"...................
26ec0 20 20 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 ................filter-func)))))
26ee0 29 29 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 ))..(defun.gptel--convert-org.(c
26f00 6f 6e 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 ontent.buffer)..."Transform.CONT
26f20 45 4e 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 ENT.according.to.required.major-
26f40 6d 6f 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 mode...Currently.only.`org-mode'
26f60 20 69 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 .is.handled...BUFFER.is.the.LLM.
26f80 69 6e 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 interaction.buffer."...(pcase.(b
26fa0 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 6d 6f 64 65 20 62 75 uffer-local-value.'major-mode.bu
26fc0 66 66 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 ffer).....('org-mode.(gptel--con
26fe0 76 65 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 vert-markdown->org.content))....
27000 20 28 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 .(_.content)))..(defun.gptel--ur
27020 6c 2d 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 l-get-response.(info.&optional.c
27040 61 6c 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 allback)..."Fetch.response.to.pr
27060 6f 6d 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 ompt.in.INFO.from.the.LLM...INFO
27080 20 69 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 .is.a.plist.with.the.following.k
270a0 65 79 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 eys:.-.:data.....(the.data.being
270c0 20 73 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 .sent).-.:buffer...(the.gptel.bu
270e0 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 61 74 20 77 68 69 ffer).-.:position.(marker.at.whi
27100 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 2e 0a 0a 43 61 6c ch.to.insert.the.response)...Cal
27120 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 73 65 20 61 6e 64 l.CALLBACK.with.the.response.and
27140 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 74 65 64 0a 74 68 .INFO.afterwards...If.omitted.th
27160 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 6f 20 74 68 65 20 e.response.is.inserted.into.the.
27180 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 2e 22 0a 20 20 28 current.buffer.after.point."...(
271a0 6c 65 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 let*.((inhibit-message.t).......
271c0 20 20 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 ...(message-log-max.nil)........
271e0 20 20 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 ..(backend.gptel-backend).......
27200 20 20 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 ...(url-request-method."POST")..
27220 20 20 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 ........(url-request-extra-heade
27240 72 73 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 rs...........(append.'(("Content
27260 2d 54 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 -Type"..."application/json"))...
27280 20 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 68 65 61 64 ................(when-let.((head
272a0 65 72 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 er.(gptel-backend-header.gptel-b
272c0 61 63 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 ackend))).....................(i
272e0 66 20 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 f.(functionp.header)............
27300 20 20 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 .............(funcall.header).he
27320 61 64 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 ader)))).........(url-request-da
27340 74 61 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 ta..........(encode-coding-strin
27360 67 0a 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 g...........(gptel--json-encode.
27380 28 70 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 (plist-get.info.:data)).........
273a0 20 20 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 ..'utf-8))).....(when.gptel-log-
273c0 6c 65 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 level...............;logging....
273e0 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 76 65 6c 20 27 64 65 ...(when.(eq.gptel-log-level.'de
27400 62 75 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 bug).........(gptel--log.(gptel-
27420 2d 6a 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 -json-encode....................
27440 20 20 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 ..(mapcar.(lambda.(pair).(cons.(
27460 69 6e 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 intern.(car.pair)).(cdr.pair))).
27480 20 20 20 20 20 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 .............................url
274a0 2d 72 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 -request-extra-headers))........
274c0 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 29 ............."request.headers"))
274e0 0a 20 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 .......(gptel--log.url-request-d
27500 61 74 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 ata."request.body")).....(url-re
27520 74 72 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 trieve.(let.((backend-url.(gptel
27540 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 29 29 0a 20 20 -backend-url.gptel-backend)))...
27560 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 74 69 6f 6e 70 ..................(if.(functionp
27580 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 20 20 20 20 20 .backend-url)...................
275a0 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 20 62 61 63 6b ......(funcall.backend-url).back
275c0 65 6e 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 end-url))...................(lam
275e0 62 64 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 bda.(_).....................(pca
27600 73 65 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 se-let.((`(,response.,http-msg.,
27620 65 72 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 error)..........................
27640 20 20 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 ........(gptel--url-parse-respon
27660 73 65 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 se.backend.(current-buffer))))..
27680 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 70 75 74 20 .....................(plist-put.
276a0 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 20 20 20 20 20 20 info.:status.http-msg)..........
276c0 20 20 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 .............(when.error.(plist-
276e0 70 75 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 put.info.:error.error)).........
27700 20 20 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 ..............(funcall.(or.callb
27720 61 63 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 ack.#'gptel--insert-response)...
27740 20 20 20 20 20 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
27760 70 6f 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 ponse.info).....................
27780 20 20 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 ..(kill-buffer)))...............
277a0 20 20 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 ....nil.t.nil)))..(cl-defgeneric
277c0 20 67 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 .gptel--parse-response.(backend.
277e0 72 65 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 response.proc-info)..."Response.
27800 65 78 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 extractor.for.LLM.requests...BAC
27820 4b 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 KEND.is.the.LLM.backend.in.use..
27840 0a 52 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 .RESPONSE.is.the.parsed.JSON.of.
27860 74 68 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 the.response,.as.a.plist...PROC-
27880 49 4e 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 INFO.is.a.plist.with.process.inf
278a0 6f 72 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 ormation.and.other.context..See.
278c0 60 67 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 `gptel-curl--get-response'.for.i
278e0 74 73 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 ts.contents.")..(defvar.url-http
27900 2d 65 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 -end-of-headers).(defvar.url-htt
27920 70 2d 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 p-response-status).(defun.gptel-
27940 2d 75 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 -url-parse-response.(backend.res
27960 70 6f 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 ponse-buffer)..."Parse.response.
27980 66 72 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 from.BACKEND.in.RESPONSE-BUFFER.
279a0 22 0a 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 "...(when.(buffer-live-p.respons
279c0 65 2d 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 e-buffer).....(with-current-buff
279e0 65 72 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 er.response-buffer.......(when.g
27a00 70 74 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 ptel-log-level.............;logg
27a20 69 6e 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 ing.........(save-excursion.....
27a40 20 20 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 ......(goto-char.url-http-end-of
27a60 2d 68 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 -headers)...........(when.(eq.gp
27a80 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 20 20 tel-log-level.'debug)...........
27aa0 20 20 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 ..(gptel--log.(gptel--json-encod
27ac0 65 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 69 65 e.(buffer-substring-no-propertie
27ae0 73 20 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 s.(point-min).(point))).........
27b00 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 68 65 61 64 65 72 ................"response.header
27b20 73 22 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 s"))...........(gptel--log.(buff
27b40 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 70 6f 69 6e er-substring-no-properties.(poin
27b60 74 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 20 20 20 20 20 20 t).(point-max)).................
27b80 20 20 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 ......"response.body"))).......(
27ba0 69 66 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 if-let*.((http-msg.(string-trim.
27bc0 28 62 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 (buffer-substring.(line-beginnin
27be0 67 2d 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 g-position).....................
27c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
27c20 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)))).....
27c40 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 6f ............(response.(progn.(go
27c60 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 65 61 64 65 72 73 29 to-char.url-http-end-of-headers)
27c80 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 ................................
27ca0 20 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 20 20 ..(condition-case.nil...........
27cc0 20 20 20 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
27ce0 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 20 20 20 20 20 20 20 l--json-read)...................
27d00 20 20 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 .................(error.'json-re
27d20 61 64 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 ad-error)))))...........(cond...
27d40 20 20 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 ..........;;.FIXME.Handle.the.ca
27d60 73 65 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 se.where.HTTP.100.is.followed.by
27d80 20 48 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 .HTTP.(not.200).BUG.#194........
27da0 20 20 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 ....((or.(memq.url-http-response
27dc0 2d 73 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 -status.'(200.100)).............
27de0 20 20 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 ....(string-match-p."\\(?:1\\|2\
27e00 5c 29 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 \)00.OK".http-msg)).............
27e20 28 6c 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 (list.(string-trim.(gptel--parse
27e40 2d 72 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 -response.backend.response......
27e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
27e80 20 20 20 20 20 20 20 20 27 28 3a 62 75 66 66 65 72 20 72 65 73 70 6f 6e 73 65 2d 62 75 66 66 65 ........'(:buffer.response-buffe
27ea0 72 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 r)))....................http-msg
27ec0 29 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 ))............((plist-get.respon
27ee0 73 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 se.:error).............(let*.((e
27f00 72 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 rror-data.(plist-get.response.:e
27f20 72 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 rror))....................(error
27f40 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
27f60 61 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 age))....................(error-
27f80 74 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 type.(plist-get.error-data.:type
27fa0 29 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 ))....................(backend-n
27fc0 61 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 ame.(gptel-backend-name.backend)
27fe0 29 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 ))...............(if.(stringp.er
28000 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 28 70 72 6f ror-data)...................(pro
28020 67 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 gn.(message."%s.error:.(%s).%s".
28040 62 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 backend-name.http-msg.error-data
28060 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 73 65 74 71 )..........................(setq
28080 20 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 .error-msg.(string-trim.error-da
280a0 74 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 ta))).................(when.(str
280c0 69 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 ingp.error-msg).................
280e0 20 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 ..(message."%s.error:.(%s).%s".b
28100 61 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 ackend-name.http-msg.(string-tri
28120 6d 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 m.error-msg))).................(
28140 77 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 when.error-type.(setq.http-msg.(
28160 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 74 72 69 6e concat."("..http-msg.").".(strin
28180 67 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 g-trim.error-type)))))..........
281a0 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 20 68 74 74 70 2d .....(list.nil.(concat."(".http-
281c0 6d 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 msg.").".(or.error-msg."")))))..
281e0 20 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 ..........((eq.response.'json-re
28200 61 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 ad-error).............(list.nil.
28220 28 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 (concat."(".http-msg.").Malforme
28240 64 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 d.JSON.in.response.")."json-read
28260 2d 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 -error"))............(t.(list.ni
28280 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 64 20 l.(concat."(".http-msg.").Could.
282a0 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 20 20 not.parse.HTTP.response.")......
282c0 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 70 61 72 73 65 20 ..............."Could.not.parse.
282e0 48 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 HTTP.response."))).........(list
28300 20 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 .nil.(concat."(".http-msg.").Cou
28320 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 0a 20 20 ld.not.parse.HTTP.response.")...
28340 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 54 54 ............"Could.not.parse.HTT
28360 50 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 P.response.")))))..(cl-defun.gpt
28380 65 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 el--sanitize-model.(&key.(backen
283a0 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 20 20 20 20 20 20 20 d.gptel-backend)................
283c0 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 6f 64 65 6c 20 67 70 .......................(model.gp
283e0 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 20 20 20 tel-model)......................
28400 20 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 .................(shoosh.t))..."
28420 43 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 Check.if.MODEL.is.available.in.B
28440 41 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 ACKEND,.adjust.accordingly...If.
28460 53 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 SHOOSH.is.true,.don't.issue.a.wa
28480 72 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 rning."...(let*.((available.(gpt
284a0 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 29 29 0a 20 20 20 el-backend-models.backend)))....
284c0 20 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 .(unless.(member.model.available
284e0 29 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 ).......(let.((fallback.(car.ava
28500 69 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 ilable))).........(unless.shoosh
28520 0a 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 ...........(display-warning.....
28540 20 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 .......'gptel............(format
28560 20 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 .(concat."Preferred.`gptel-model
28580 27 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 '.\"%s\".not"...................
285a0 20 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 ........."supported.in.\"%s\",.u
285c0 73 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 sing.\"%s\".instead")...........
285e0 20 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 .........model.(gptel-backend-na
28600 6d 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 me.backend).fallback))).........
28620 28 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 (setq-local.gptel-model.fallback
28640 29 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 )))))..;;;###autoload.(defun.gpt
28660 65 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 el.(name.&optional._.initial.int
28680 65 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 eractivep)..."Switch.to.or.start
286a0 20 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 .a.chat.session.with.NAME...With
286c0 20 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 .a.prefix.arg,.query.for.a.(new)
286e0 20 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 .session.name...Ask.for.API-KEY.
28700 69 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 if.`gptel-api-key'.is.unset...If
28720 20 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 .region.is.active,.use.it.as.the
28740 20 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 .INITIAL.prompt...Returns.the.bu
28760 66 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 ffer.created.or.switched.to...IN
28780 54 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 TERACTIVEP.is.t.when.gptel.is.ca
287a0 6c 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 lled.interactively."...(interact
287c0 69 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 ive....(let*.((backend.(default-
287e0 76 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 value.'gptel-backend))..........
28800 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 20 28 66 6f 72 6d 61 .(backend-name............(forma
28820 74 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 t."*%s*".(gptel-backend-name.bac
28840 6b 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 kend))))......(list.(if.current-
28860 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 61 64 2d prefix-arg................(read-
28880 73 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 string."Session.name:.".........
288a0 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 74 65 2d 6e 65 ....................(generate-ne
288c0 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 20 20 20 20 20 w-buffer-name...................
288e0 20 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 ...........backend-name)).......
28900 20 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 .......backend-name)............
28920 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.............
28940 20 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 ...(gptel--get-api-key..........
28960 20 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 .......(gptel-backend-key.backen
28980 64 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 d))..............((error.user-er
289a0 72 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 ror)...............(setq.gptel-a
289c0 70 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 pi-key.....................(read
289e0 2d 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 -passwd......................(fo
28a00 72 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 rmat."%s.API.key:.".backend-name
28a20 29 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 )))))............(and.(use-regio
28a40 6e 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 n-p).................(buffer-sub
28a60 73 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 string.(region-beginning).......
28a80 20 20 20 20 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
28aa0 69 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 ion-end)))............t)))...(wi
28ac0 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
28ae0 65 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 eate.name).....(cond.;Set.major.
28b00 6d 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 mode......((eq.major-mode.gptel-
28b20 64 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 default-mode))......((eq.gptel-d
28b40 65 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 efault-mode.'text-mode).......(t
28b60 65 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 ext-mode).......(visual-line-mod
28b80 65 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 e.1))......(t.(funcall.gptel-def
28ba0 61 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 ault-mode))).....(gptel--sanitiz
28bc0 65 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 e-model.:backend.(default-value.
28be0 27 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).................
28c00 20 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 ...........:model.(default-value
28c20 20 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 .'gptel-model)..................
28c40 20 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 ..........:shoosh.nil).....(unle
28c60 73 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 ss.gptel-mode.(gptel-mode.1))...
28c80 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
28ca0 6b 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 kip-chars-backward."\t\r\n")....
28cc0 20 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 .(if.(bobp).(insert.(or.initial.
28ce0 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)))).
28d00 20 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 ....(when.interactivep.......(di
28d20 73 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 splay-buffer.(current-buffer).gp
28d40 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 29 0a 20 20 20 20 20 tel-display-buffer-action)......
28d60 20 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 .(message."Send.your.query.with.
28d80 25 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 %s!"................(substitute-
28da0 63 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 command-keys."\\[gptel-send]")))
28dc0 0a 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 .....(current-buffer)))....;;.Re
28de0 73 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 sponse.tweaking.commands..(defun
28e00 20 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 .gptel--attach-response-history.
28e20 28 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 (history.&optional.buf)..."Attac
28e40 68 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 h.HISTORY.to.the.next.gptel.resp
28e60 6f 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 onse.in.buffer.BUF...HISTORY.is.
28e80 61 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 a.list.of.strings.typically.cont
28ea0 61 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 aining.text.replaced.by.gptel...
28ec0 42 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 BUF.is.the.current.buffer.if.not
28ee0 20 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 .specified...This.is.used.to.mai
28f00 6e 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 ntain.variants.of.prompts.or.res
28f20 70 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 ponses.to.diff.against.if.requir
28f40 65 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 ed."...(with-current-buffer.(or.
28f60 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 28 6c 65 74 72 65 buf.(current-buffer)).....(letre
28f80 63 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 c.((gptel--attach-after.........
28fa0 20 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 ......(lambda.(b.e).............
28fc0 20 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 ....(put-text-property.b.e.'gpte
28fe0 6c 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 l-history.......................
29000 20 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 .............(append.(ensure-lis
29020 74 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 t.history)......................
29040 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 72 2d ......................(get-char-
29060 70 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 property.(1-.e).'gptel-history))
29080 29 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 ).................(remove-hook.'
290a0 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 0a 20 20 gptel-post-response-functions...
290c0 20 20 20 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 ...........................gptel
290e0 2d 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 --attach-after.'local)))).......
29100 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 6f 6e 73 65 2d 66 (add-hook.'gptel-post-response-f
29120 75 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 unctions.gptel--attach-after....
29140 20 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 .............nil.'local))))..(de
29160 66 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 fun.gptel--ediff.(&optional.arg.
29180 62 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 bounds-func)..."Ediff.response.a
291a0 74 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 t.point.against.previous.gptel.r
291c0 65 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 esponses...If.prefix.ARG.is.non-
291e0 6e 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 nil,.select.the.previous.respons
29200 65 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 e.to.ediff.against.interactively
29220 2e 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 ...If.specified,.use.BOUNDS-FUNC
29240 20 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 .to.compute.the.bounds.of.the.re
29260 73 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 sponse.at.point...This.can.be.us
29280 65 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 ed.to.include.additional.context
292a0 20 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 .for.the.ediff.session."...(inte
292c0 72 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 ractive."P")...(when.(gptel--at-
292e0 72 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 response-history-p).....(pcase-l
29300 65 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 et*.((`(,beg...,end).(funcall.(o
29320 72 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 r.bounds-func.#'gptel--get-bound
29340 73 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 s)))..................(prev-resp
29360 6f 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 onse...................(if.arg..
29380 20 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 .....................(completing
293a0 2d 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 -read."Choose.response.variant.t
293c0 6f 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 o.diff.against:."...............
293e0 20 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 .........................(get-ch
29400 61 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 ar-property.(point).'gptel-histo
29420 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 20 20 20 20 20 20 ry).............................
29440 20 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 ...........nil.t)...............
29460 20 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 ......(car-safe.(get-char-proper
29480 74 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 ty.(point).'gptel-history))))...
294a0 20 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 ...............(buffer-mode.majo
294c0 72 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 r-mode)..................(bufnam
294e0 65 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 e.(buffer-name))................
29500 20 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 ..(`(,new-buf.,new-beg.,new-end)
29520 0a 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 ...................(with-current
29540 2d 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 -buffer.......................(g
29560 65 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 et-buffer-create.(concat.bufname
29580 20 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 ."-PREVIOUS-*"))................
295a0 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 79 20 74 29 .....(let.((inhibit-read-only.t)
295c0 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 65 72 61 73 65 2d 62 ).......................(erase-b
295e0 75 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 uffer).......................(de
29600 6c 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 lay-mode-hooks.(funcall.buffer-m
29620 6f 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 ode)).......................(vis
29640 75 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 ual-line-mode)..................
29660 20 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 .....(insert.prev-response).....
29680 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
296a0 69 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 int-min)).......................
296c0 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 69 (list.(current-buffer).(point-mi
296e0 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 28 75 6e 6c 65 73 n).(point-max)))))).......(unles
29700 73 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 s.prev-response.(user-error."gpt
29720 65 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 el.response.is.additive:.no.chan
29740 67 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 ges.to.ediff")).......(require.'
29760 65 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 ediff).......(letrec.((cwc.(curr
29780 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 0a 20 20 20 20 20 ent-window-configuration))......
297a0 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 65 0a ..........(gptel--ediff-restore.
297c0 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 29 0a 20 20 20 20 20 ................(lambda.()......
297e0 20 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 .............(when.(window-confi
29800 67 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 guration-p.cwc).................
29820 20 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 ....(set-window-configuration.cw
29840 63 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 c))...................(kill-buff
29860 65 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 er.(get-buffer.(concat.bufname."
29880 2d 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 -PREVIOUS-*"))).................
298a0 20 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 ..(kill-buffer.(get-buffer.(conc
298c0 61 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 at.bufname."-CURRENT-*")))......
298e0 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 65 64 69 66 66 .............(remove-hook.'ediff
29900 2d 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 -quit-hook.gptel--ediff-restore)
29920 29 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 ))).........(add-hook.'ediff-qui
29940 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 0a 20 20 20 t-hook.gptel--ediff-restore)....
29960 20 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 .....(apply..........#'ediff-reg
29980 69 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 ions-internal..........(get-buff
299a0 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 28 63 75 er.(ediff-make-cloned-buffer.(cu
299c0 72 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 rrent-buffer)."-CURRENT-*"))....
299e0 20 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 ......beg.end.new-buf.new-beg.ne
29a00 77 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 w-end..........nil..........(lis
29a20 74 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 t.'ediff-regions-wordwise.'word-
29a40 77 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 wise.nil)..........;;.(if.(trans
29a60 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).......
29a80 20 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 ...;;.....(list.'ediff-regions-w
29aa0 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 20 20 ordwise.'word-wise.nil).........
29ac0 20 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 .;;...(list.'ediff-regions-linew
29ae0 69 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 ise.nil.nil))..........)))))..(d
29b00 65 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 efun.gptel--mark-response.()..."
29b20 4d 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 Mark.gptel.response.at.point,.if
29b40 20 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 .any."...(interactive)...(unless
29b60 20 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 .(gptel--in-response-p).(user-er
29b80 72 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 ror."No.gptel.response.at.point"
29ba0 29 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 ))...(pcase-let*.((`(,beg...,end
29bc0 29 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 ).(gptel--get-bounds))).....(got
29be0 6f 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 o-char.beg).(push-mark).(goto-ch
29c00 61 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 ar.end).(activate-mark)))..(defu
29c20 6e 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 n.gptel--previous-variant.(&opti
29c40 6f 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 onal.arg)..."Switch.to.previous.
29c60 67 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 gptel-response.at.this.point,.if
29c80 20 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 .it.exists."...(interactive."p")
29ca0 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 20 ...(pcase-let*.((`(,beg...,end).
29cc0 28 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 (gptel--get-bounds))............
29ce0 20 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 ....(history.(get-char-property.
29d00 28 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 (point).'gptel-history))........
29d20 20 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 ........(alt-response.(car-safe.
29d40 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 28 6f 66 66 73 65 74 history))................(offset
29d60 29 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 )).....(unless.(and.history.alt-
29d80 72 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 response).......(user-error."No.
29da0 76 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 variant.responses.available"))..
29dc0 20 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 ...(if.(>.arg.0).........(setq.h
29de0 69 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 istory.(append.(cdr.history)....
29e00 20 20 20 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 ...........................(list
29e20 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 69 65 73 .(buffer-substring-no-properties
29e40 20 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 .beg.end)))).......(setq........
29e60 61 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 alt-response.(car.(last.history)
29e80 29 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 )........history.(cons.(buffer-s
29ea0 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 0a ubstring-no-properties.beg.end).
29ec0 20 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 .....................(nbutlast.h
29ee0 69 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 istory)))).....(add-text-propert
29f00 69 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 ies..............0.(length.alt-r
29f20 65 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 esponse)..............`(gptel.re
29f40 73 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 sponse.gptel-history.,history)..
29f60 20 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 ............alt-response).....(s
29f80 65 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 etq.offset.(min.(-.(point).beg).
29fa0 28 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 (1-.(length.alt-response))))....
29fc0 20 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 .(delete-region.beg.end).....(in
29fe0 73 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 sert.alt-response).....(goto-cha
2a000 72 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 r.(+.beg.offset)).....(pulse-mom
2a020 65 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 entary-highlight-region.beg.(+.b
2a040 65 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 eg.(length.alt-response)))))..(d
2a060 65 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 efun.gptel--next-variant.(&optio
2a080 6e 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 nal.arg)..."Switch.to.next.gptel
2a0a0 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 69 74 20 65 -response.at.this.point,.if.it.e
2a0c0 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 20 20 28 67 xists."...(interactive."p")...(g
2a0e0 70 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 ptel--previous-variant.(-.arg)))
2a100 0a 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 ..(provide.'gptel).;;;.gptel.el.
2a120 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 00 ends.here.......................
2a140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a4a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a4c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a4e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
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 ................................